27 lines
854 B
TypeScript
27 lines
854 B
TypeScript
import { ensureIdentity } from '@app/server/helpers';
|
|
import { IdentityContext } from '@app/server/identity';
|
|
import { prisma, uuid } from '@app/server/prisma/client';
|
|
import { Book, MutationBookCreateArgs } from '@generated/types';
|
|
import { toBookSchema } from './mappers/bookMapper';
|
|
|
|
export async function BookCreateResolver(
|
|
_: any,
|
|
{ input }: MutationBookCreateArgs,
|
|
{ identity }: IdentityContext
|
|
): Promise<Book> {
|
|
ensureIdentity(identity);
|
|
|
|
console.log(input.title.length);
|
|
if (input.title.length > 60) throw new Error('Title is too long.');
|
|
if (input.description.length > 900) throw new Error('Description is too long.');
|
|
|
|
const model = await prisma.book.create({
|
|
data: {
|
|
id: uuid(),
|
|
title: input.title,
|
|
description: input.description,
|
|
authorId: identity.id
|
|
}
|
|
});
|
|
return toBookSchema(model);
|
|
}
|