diff --git a/adapters/supabaseAdapter.js b/adapters/supabaseAdapter.js index 11c9ec4..8a12e5c 100755 --- a/adapters/supabaseAdapter.js +++ b/adapters/supabaseAdapter.js @@ -37,6 +37,19 @@ export async function getAnimalsByUserId(userId) { return data; } + +export async function getFriendsForUser(userId) { + const { data, error } = await supabase.from('users') .select('friends').eq('id',userId).single(); + if (error) { + return {friends:null} + throw error; + } + + return data; +} + + + export async function handleUser(userData) { const {username, email, password} = userData; // userNotInDb(supabase, username); @@ -52,4 +65,5 @@ export async function handleUser(userData) { }; -export { supabase }; \ No newline at end of file +export { supabase }; + diff --git a/controllers/usersViaSupabase.js b/controllers/usersViaSupabase.js index ca6f2c0..67704eb 100755 --- a/controllers/usersViaSupabase.js +++ b/controllers/usersViaSupabase.js @@ -1,4 +1,5 @@ -import { getUsersData, getUserIdData, getAnimalsByUserId, handleUser } from "../adapters/supabaseAdapter.js"; + +import { getUsersData, getUserIdData, getAnimalsByUserId, handleUser, getFriendsForUser } from "../adapters/supabaseAdapter.js"; export async function getUsers(req, res) { try { const data = await getUsersData(); @@ -28,6 +29,27 @@ export async function getUserAnimals(req, res) { } } + +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){ + + 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{ @@ -37,4 +59,5 @@ export async function postAuthDetails(req, res) { catch (err) { res.status(500).send(err.message); } - }; \ No newline at end of file + }; + diff --git a/routes/index.js b/routes/index.js index 3825cf0..4b92ff4 100755 --- a/routes/index.js +++ b/routes/index.js @@ -1,6 +1,7 @@ import express, { Router } from 'express'; import cors from 'cors'; -import { getUsers, getUserId, getUserAnimals, postAuthDetails } from '../controllers/usersViaSupabase.js'; +import { getUsers, getUserId, getUserAnimals, postAuthDetails, getFriends } from '../controllers/usersViaSupabase.js'; + const router = express.Router(); @@ -26,6 +27,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.post('/users', cors(), postAuthDetails); + export default router; \ No newline at end of file