aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2025-04-27 22:58:24 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2025-04-27 22:58:24 +0530
commitb5f78bf3049c181b47d8692b728d7087c4fad51d (patch)
tree694e350283ac07d43b9589ca01db5c2427a107a4
parent961708462525292c28aaf2462f7c50b05536df99 (diff)
Bug Fix: preventing an undefined friendId causing unwanted deletion of all of the user's friendships (one sidedly, too\!)
-rw-r--r--package.json2
-rw-r--r--prisma/schema.prisma4
-rw-r--r--src/controller/friend.ts6
-rw-r--r--src/service/friend.ts7
4 files changed, 9 insertions, 10 deletions
diff --git a/package.json b/package.json
index 62caf3f..fa2d502 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "financer",
- "version": "0.3.1",
+ "version": "0.4.0",
"description": "Pocket Money Tracker",
"main": "dist/index.js",
"scripts": {
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 7c99fed..4e2dbbc 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -65,13 +65,11 @@ model MonthlyBudget {
}
model Friend {
- id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int
friend User @relation(name: "friend", fields: [friendId], references: [id])
friendId Int
-
- @@unique([userId, friendId])
+ @@id([userId, friendId])
}
enum TransactionType {
diff --git a/src/controller/friend.ts b/src/controller/friend.ts
index 5d76350..4690f39 100644
--- a/src/controller/friend.ts
+++ b/src/controller/friend.ts
@@ -87,9 +87,11 @@ const addFriend = async (req: Request, res: Response) => {
const removeFriend = async (req: Request, res: Response) => {
try {
+ if (req.body.friendId === undefined || req.body.friendId === null || !Number.isInteger(req.body.friendId)) {
+ res.status(400).json({ message: "Invalid Friend ID" });
// @ts-ignore
- if (req.userId == req.body.friendId) {
- res.status(400).json({ message: "Attempted to unfriend self" });
+ } else if (req.userId == req.body.friendId) {
+ res.status(400).json({message: "Attempted to unfriend self"});
} else {
// @ts-ignore
const { count } = await unfriend(req.userId, req.body.friendId)
diff --git a/src/service/friend.ts b/src/service/friend.ts
index 8266323..1f30760 100644
--- a/src/service/friend.ts
+++ b/src/service/friend.ts
@@ -33,15 +33,14 @@ const friend = async (userId: Number, friendId: Number) => {
return readById(userId);
}
-const unfriend = async (userId: Number, friendId: Number) => {
+const unfriend = (userId: Number, friendId: Number) => {
return prisma.friend.deleteMany({
where: {
OR: [
// @ts-ignore
- { userId: userId },
-
+ { userId: userId, friendId: friendId },
// @ts-ignore
- { userId: friendId },
+ { userId: friendId, friendId: userId }
]
}
})