Skip to content

Commit

Permalink
rebased
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon-Manasse committed Dec 22, 2023
1 parent d1c6f8f commit 0c1eb56
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 23 deletions.
35 changes: 26 additions & 9 deletions adapters/supabaseAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ const supabase = createClient(
process.env.SUPABASE_KEY
);

export async function getEvent(eventId) {
const { data, error } = await supabase.from('events').select().eq('id', eventId).single();
if (error) {
return null;
throw error;
}
return data;
}

export async function getUsersData() {
const { data, error } = await supabase.from('users').select();
if (error) {
Expand All @@ -19,7 +28,7 @@ export async function getUsersData() {
}

export async function getUserIdData(userId) {
const { data, error } = await supabase.from('users').select().eq('id', userId) .single();
const { data, error } = await supabase.from('users').select().eq('id', userId).single();
if (error) {
console.error('query error', error);
throw error;
Expand All @@ -29,7 +38,7 @@ export async function getUserIdData(userId) {
}

export async function getAnimalsByUserId(userId) {
const { data, error } = await supabase.from('animals') .select('*') .eq('user_id', userId);
const { data, error } = await supabase.from('animals').select('*').eq('user_id', userId);
if (error) {
console.error('Error fetching animals', error);
throw error;
Expand All @@ -39,30 +48,38 @@ export async function getAnimalsByUserId(userId) {


export async function getFriendsForUser(userId) {
const { data, error } = await supabase.from('users') .select('friends').eq('id',userId).single();
const { data, error } = await supabase.from('users').select('friends').eq('id', userId).single();
if (error) {
return {friends:null}
return { friends: null }
throw error;
}

return data;
}

export async function getEventsOfUser(userId) {
const { data, error } = await supabase.from('users-events').select('*').eq('user_id', userId);
if (error) {
return { events: null }
throw error;
}

return data;
}


export async function handleUser(userData) {
const {username, email, password} = userData;
const { username, email, password } = userData;
// userNotInDb(supabase, username);
try {
const supabaseResponse = await signUserUp(supabase, email, password, username);
return supabaseResponse;
}
catch (error)
{
}
catch (error) {
console.error('query error', error);
throw error;
}

};

export { supabase };
Expand Down
37 changes: 27 additions & 10 deletions controllers/usersViaSupabase.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

import { getUsersData, getUserIdData, getAnimalsByUserId, handleUser, getFriendsForUser } from "../adapters/supabaseAdapter.js";
import { getUsersData, getUserIdData, getAnimalsByUserId, handleUser, getFriendsForUser, getEventsOfUser, getEvent } from "../adapters/supabaseAdapter.js";
export async function getUsers(req, res) {
try {
const data = await getUsersData();
Expand Down Expand Up @@ -34,30 +33,48 @@ export async function getFriends(req, res) {
try {
const userId = parseInt(req.params.userId);
const friendsData = await getFriendsForUser(userId);
let detailedFriends = {'id':null}
if(friendsData.friends != null){
let detailedFriends = { 'id': null }
if (friendsData.friends != null) {

const friendKeys = Object.keys(friendsData.friends);

detailedFriends = await Promise.all(
friendKeys.map(async (friendKey) => await getUserIdData(friendKey))
);
}
);
}

res.json(detailedFriends);
} catch (error) {
res.status(500).send(error.message);
}
}


export async function postAuthDetails(req, res) {
const userData = req.body;
try{
try {
const value = await handleUser(userData)
res.status(200).json({ message: "Registration successful", data: value })
}
catch (err) {
res.status(500).send(err.message);
}
};
};


export async function getUserEvents(req, res) {
try {
const userId = parseInt(req.params.userId);
const userEvents = await getEventsOfUser(userId);

for (let i = 0; i < userEvents.length; i++) {
const event = await getEvent(userEvents[i].event_id);
userEvents[i].event_id = event;
}

res.json(userEvents);
} catch (error) {
res.status(500).send(error.message);
}
}

7 changes: 3 additions & 4 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import express, { Router } from 'express';
import cors from 'cors';
import { getUsers, getUserId, getUserAnimals, postAuthDetails, getFriends } from '../controllers/usersViaSupabase.js';

import { getUsers, getUserId, getUserAnimals, postAuthDetails, getFriends, getUserEvents } from '../controllers/usersViaSupabase.js';

const router = express.Router();

Expand All @@ -27,8 +26,8 @@ router.options('/users', (req, res, next) => {
router.get('/users', cors(), getUsers);
router.get('/users/:number', cors(), getUserId);
router.get('/users/:userId/animals', cors(), getUserAnimals);
router.get('/users/:userId/friends',cors(),getFriends)
router.get('/users/:userId/friends', cors(), getFriends)
router.get('/users/:userId/events', cors(), getUserEvents);
router.post('/users', cors(), postAuthDetails);


export default router;

0 comments on commit 0c1eb56

Please sign in to comment.