import { IdentityContext } from '@app/server/identity'; import { prisma } from '@app/server/prisma/client'; import { BookManyOutput, QueryBookManyArgs } from '@generated/types'; import { Prisma } from '@prisma/client'; import { toBookSchema } from './mappers/bookMapper'; export async function BookManyResolver( _: any, { input }: QueryBookManyArgs, { identity }: IdentityContext ): Promise { const { filter } = input; const terms = filter.terms?.toLowerCase(); const bookWhere: Prisma.BookWhereInput = { OR: terms != null ? [{ title: { contains: terms } }, { author: { username: terms } }] : undefined }; const items = await prisma.book.findMany({ where: bookWhere, skip: filter.offset ?? 0, take: filter.size ?? 10 }); return { items: await Promise.all(items.map(value => toBookSchema(value))), total: await prisma.book.count({ where: bookWhere }) }; }