import { Prisma } from "@/generated/prisma/client" import { PaginatedResult } from "@/lib/types" //eslint-disable-next-line type PaginationArgs = { model: any // prisma. where?: Prisma.Enumerable // filtros page?: number pageSize?: number orderBy?: any include?: Prisma.Enumerable select?: Prisma.Enumerable } export async function paginate({ model, where = {}, page = 1, pageSize = 10, orderBy = { createdAt: "desc" }, include, select, }: PaginationArgs): Promise> { const skip = (page - 1) * pageSize const [data, totalItems] = await Promise.all([ model.findMany({ where, skip, take: pageSize, orderBy, include, select, }), model.count({ where }), ]) return { data, totalItems, totalPages: Math.ceil(totalItems / pageSize), currentPage: page, pageSize, } }