Files
discord-clone/server/api/user/friends/[id]/accept.post.ts

69 lines
1.2 KiB
TypeScript

import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
throw createError({
statusCode: 401,
statusMessage: 'Unauthenticated',
});
}
const requestId = event.context.params?.id;
if (!requestId) return;
const request = await prisma.friendRequest.findFirst({
where: {
id: requestId
}
});
if (!request?.id) {
throw createError({
statusCode: 404,
statusMessage: 'friend request not found.'
});
}
if (request?.recipientId !== event.context.user.id) {
throw createError({
statusCode: 403,
statusMessage: 'You do not have permission to accept this friend request.'
});
}
await prisma.user.update({
where: {
id: event.context.user.id
},
data: {
friends: {
connect: [{ id: request.senderId }]
}
}
});
await prisma.user.update({
where: {
id: request.senderId
},
data: {
friends: {
connect: [{ id: event.context.user.id }]
}
}
});
await prisma.friendRequest.update({
where: {
id: requestId
},
data: {
status: 'accepted'
}
});
return {
message: 'friend request accepted successfully.'
};
});