UNPKG

prisma-criteria

Version:

Parses, validates, and creates a criteria object that can be passed to the Prisma "findMany" method to query a list of resources matching the given filters, pagination and order.

50 lines (49 loc) 1.34 kB
import { PrismaFilterRule, PrismaLogicOperator } from './filters/validation/types.js'; import { XOR } from './shared/utility.types.js'; export type PrismaCriteria = { where: PrismaWhereStatement; orderBy: Record<string, 'asc' | 'desc'> | undefined; } & ({ take: number | undefined; skip: number | undefined; }); export type UserInputCriteria = Partial<{ filters: string; orderBy: string; orderDir: string; pageNumber: string; pageSize: string; }> & { [k: string]: string | undefined; }; export type PrismaCriteriaOptions = { rules: { allowedFilters: PrismaFilterRule[]; allowedFieldsToOrderBy: string[]; pageSizeMax: number; }; defaults?: { filters?: PrismaWhereStatement; orderBy?: PrismaCriteria['orderBy']; pagination?: { pageSize: number; pageNumber: number; }; }; }; export type PrismaWhereSelfStatement = { [x: string]: { [x: string]: unknown; }; }; export type PrismaWhereRelationStatement = { [x: string]: { [x: string]: { [x: string]: unknown; }; }; }; export type PrismaWhereFilter = XOR<PrismaWhereSelfStatement, PrismaWhereRelationStatement>; export type PrismaWhereStatement = { [LogOp in PrismaLogicOperator]?: PrismaWhereFilter[]; };