♻️ Refactor email templating code (#533)

This commit is contained in:
Luke Vella 2023-03-03 11:46:30 +00:00 committed by GitHub
parent 0a836aeec7
commit 309cb109aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
79 changed files with 3926 additions and 1455 deletions

View file

@ -0,0 +1,34 @@
import { Prisma, PrismaClient } from "@rallly/database";
export const softDeleteMiddleware = (
prisma: PrismaClient,
model: Prisma.ModelName,
) => {
prisma.$use(async (params, next) => {
// We use middleware to handle soft deletes
// See: https://www.prisma.io/docs/concepts/components/prisma-client/middleware/soft-delete-middleware
if (params.model === model) {
if (params.action === "delete") {
// Delete queries
// Change action to an update
params.action = "update";
params.args["data"] = { deleted: true, deletedAt: new Date() };
}
if (params.action == "deleteMany") {
// Delete many queries
params.action = "updateMany";
if (params.args.data != undefined) {
params.args.data["deleted"] = true;
} else {
params.args["data"] = { deleted: true, deletedAt: new Date() };
}
}
if (params.action === "findFirst") {
// Add 'deleted' filter
// ID filter maintained
params.args.where["deleted"] = params.args.where["deleted"] || false;
}
}
return next(params);
});
};