remixed v0

This commit is contained in:
m5r
2022-05-14 12:22:06 +02:00
parent 9275d4499b
commit 98b89ae0f7
338 changed files with 22549 additions and 44628 deletions

View File

@ -0,0 +1,51 @@
import { MembershipRole } from "@prisma/client";
import { Queue } from "~/utils/queue.server";
import db from "~/utils/db.server";
import logger from "~/utils/logger.server";
import { deleteOrganizationEntities } from "~/utils/organization.server";
type Payload = {
userId: string;
};
export default Queue<Payload>("delete user data", async ({ data }) => {
const { userId } = data;
const user = await db.user.findUnique({
where: { id: userId },
include: {
memberships: {
include: { organization: true },
},
},
});
if (!user) {
return;
}
await Promise.all(
user.memberships.map(async (membership) => {
switch (membership.role) {
case MembershipRole.OWNER: {
await deleteOrganizationEntities(membership.organization);
break;
}
case MembershipRole.USER: {
await db.membership.delete({ where: { id: membership.id } });
break;
}
}
}),
);
try {
await db.user.delete({ where: { id: user.id } });
} catch (error: any) {
if (error.code === "P2025") {
logger.warn("Could not delete user because it has already been deleted");
return;
}
throw error;
}
});

3
app/queues/index.ts Normal file
View File

@ -0,0 +1,3 @@
import deleteUserDataQueue from "./delete-user-data.server";
export default [deleteUserDataQueue];