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
JavaScript
export const isRelationFilter = (filter) => filter.relationFilter !== undefined;
const mapScalarFilter = (scalarFilter) => {
return {
[]: {
[]: scalarFilter.value
}
};
};
const mapRelationalFilter = (relationFilter) => {
return {
[]: {
[]: {
[]: {
[]: 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