UNPKG

prisma-extension-casl

Version:
33 lines (31 loc) 1.28 kB
import { relationFieldsByModel } from "./helpers" export function transformDataToWhereQuery(args: any, model: string) { ;['connect', 'disconnect'].forEach((action) => { Object.entries(args.data).forEach(([relation, obj]: [string, any]) => { if (typeof obj === 'object' && !Array.isArray(obj) && obj[action]) { // combine args.data.relation[action].AND and args.where.AND const ANDArgs = { AND: [...(obj[action].AND ?? []), ...(args.where[relation]?.AND ?? [])] } const relationTo = relationFieldsByModel[model][relation].relationToFields?.[0] const relationFrom = relationFieldsByModel[model][relation].relationFromFields?.[0] if (!relationTo || !relationFrom) { throw new Error('Cannot find correct relations to transform updateMany to casl query.') } args.where = { ...(args.where ?? {}), [relation]: { ...(args.where[relation] ?? {}), ...obj[action], ...(ANDArgs.AND.length > 0 ? ANDArgs : {}) } } args.data = { ...args.data, [relationFrom]: obj[action][relationTo] } delete args.data[relation] delete args.where[relation][relationTo] } }) }) return args }