This repository has been archived on 2026-01-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nextjs-serve-actions/app/components/Dashboard/ItemDialog/CreateComment/actions/CreateCommentAction.ts
2024-05-23 16:55:29 +02:00

45 lines
915 B
TypeScript

'use server';
import { CreateCommentFormSchema } from '../../../../../../data/types';
import prisma from '../../../../../../prisma/prisma';
interface ItemDialogActionProps {
clear: boolean;
itemId: string;
error?: string;
}
export async function CreateCommentAction(
{ itemId }: ItemDialogActionProps,
formData: FormData
) {
const formDataObj = Object.fromEntries(formData.entries());
const validatedBody = CreateCommentFormSchema.safeParse(formDataObj);
if (!validatedBody.success) {
throw new Error('Bad request');
}
const { body, score, regret } = validatedBody.data;
try {
await prisma.itemComment.create({
data: {
body,
score,
regret,
Item: {
connect: {
id: itemId
}
}
}
});
} catch (error) {
throw new Error(`Failed to create comment`);
}
return { clear: true, itemId };
}