Files
calendar/packages/prisma/extensions/disallow-undefined-delete-update-many.ts
T

43 lines
1.1 KiB
TypeScript

import { Prisma } from "@prisma/client";
export const checkUndefinedInValue = (where: any) => {
if (where) {
for (const key in where) {
// INFO: Since this is for $allModels, we don't have a way to get the correct
// where type
const whereInput = where[key as any] as any;
let message;
if (whereInput === undefined) {
message = `The value for the field "${key}" cannot be undefined.`;
throw new Error(message);
}
if (whereInput === null) {
continue;
}
if (whereInput.hasOwnProperty("in") && typeof whereInput.in === "undefined") {
message = `The "in" value for the field "${key}" cannot be undefined.`;
throw new Error(message);
}
}
}
};
export function disallowUndefinedDeleteUpdateManyExtension() {
return Prisma.defineExtension({
query: {
$allModels: {
async deleteMany({ args, query }) {
checkUndefinedInValue(args.where);
return query(args);
},
async updateMany({ args, query }) {
checkUndefinedInValue(args.where);
return query(args);
},
},
},
});
}