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.

36 lines 1.29 kB
export const isRelationFilter = (filter) => filter.relationFilter !== undefined; const mapScalarFilter = (scalarFilter) => { return { [scalarFilter.prismaRules.mapFieldTo ?? scalarFilter.prismaRules.field]: { [scalarFilter.operator]: scalarFilter.value } }; }; const mapRelationalFilter = (relationFilter) => { return { [relationFilter.prismaRules.relation]: { [relationFilter.relationFilter]: { [relationFilter.prismaRules.relationField]: { [relationFilter.operator]: relationFilter.value } } } }; }; export function filtersToPrismaWhere(filters) { const prismaWhere = {}; const createOrPushToPrismaWhere = (operator, whereFilter) => { operator in prismaWhere ? prismaWhere[operator].push(whereFilter) : prismaWhere[operator] = [whereFilter]; }; for (const filter of filters) { if (isRelationFilter(filter)) { createOrPushToPrismaWhere(filter.logicOperator, mapRelationalFilter(filter)); continue; } createOrPushToPrismaWhere(filter.logicOperator, mapScalarFilter(filter)); } return prismaWhere; } //# sourceMappingURL=filters-to-prisma-converter.js.map