69 lines
1.2 KiB
TypeScript
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.'
|
|
};
|
|
}); |