26 lines
742 B
TypeScript
26 lines
742 B
TypeScript
import { ensureIdentity } from '@app/server/helpers';
|
|
import { IdentityContext } from '@app/server/identity';
|
|
import { prisma, uuid } from '@app/server/prisma/client';
|
|
import { MutationReviewCreateArgs, Review } from '@generated/types';
|
|
import { toReviewSchema } from './mappers/reviewMapper';
|
|
|
|
export async function ReviewCreateResolver(
|
|
_: any,
|
|
{ input }: MutationReviewCreateArgs,
|
|
{ identity }: IdentityContext
|
|
): Promise<Review> {
|
|
ensureIdentity(identity);
|
|
|
|
if (input.text.length > 700) throw new Error('Review is too long.');
|
|
|
|
const model = await prisma.review.create({
|
|
data: {
|
|
id: uuid(),
|
|
text: input.text,
|
|
bookId: input.bookId,
|
|
userId: identity.id
|
|
}
|
|
});
|
|
|
|
return toReviewSchema(model);
|
|
}
|