aboutsummaryrefslogtreecommitdiff
path: root/src/service
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2025-04-27 20:06:39 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2025-04-27 20:06:39 +0530
commit4f71d05aa456b8a7c384ff4b4db4eae9bb455635 (patch)
treee1efa3180113020ca72a206b53105b3f701359d7 /src/service
parentd0a94e8b4982ed8937defaea1939b71805214ffe (diff)
Added route to get full profile of a friend
Diffstat (limited to 'src/service')
-rw-r--r--src/service/friend.ts38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/service/friend.ts b/src/service/friend.ts
index 8b5ab38..8266323 100644
--- a/src/service/friend.ts
+++ b/src/service/friend.ts
@@ -66,8 +66,44 @@ const list = async (userId: Number) => {
})
}
+const get = async (userId: Number, friendId: Number) => {
+ // Verify that users are friends. Seeing a non-friend's profile isn't allowed
+ const friendship = await prisma.friend.findFirst({
+ // @ts-ignore
+ where: {
+ AND: [
+ // @ts-ignore
+ { userId: userId },
+ // @ts-ignore
+ { friendId: friendId },
+ ]
+ }
+ })
+
+ if (friendship == null) {
+ // user isn't friends with them
+ throw new Error("forbidden");
+ }
+
+ const friend = await prisma.user.findUnique({
+ // @ts-ignore
+ where: { id: friendId }
+ })
+ // @ts-ignore
+ delete friend["password"];
+ // @ts-ignore
+ delete friend["refreshTokenVersion"];
+ // @ts-ignore
+ delete friend["createdAt"];
+ // @ts-ignore
+ delete friend["updatedAt"];
+
+ return friend;
+}
+
export {
friend,
unfriend,
- list
+ list,
+ get
} \ No newline at end of file