From 0b063e440e94c00b58764ad194d5b52cc5eaae0d Mon Sep 17 00:00:00 2001 From: Bernt Christian Egeland Date: Wed, 9 Aug 2023 20:28:47 +0000 Subject: [PATCH] cascade db --- .../20230809202431_cascade/migration.sql | 17 ++++++++++++ prisma/schema.prisma | 6 ++--- src/server/api/routers/networkRouter.ts | 27 ++++++------------- 3 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 prisma/migrations/20230809202431_cascade/migration.sql diff --git a/prisma/migrations/20230809202431_cascade/migration.sql b/prisma/migrations/20230809202431_cascade/migration.sql new file mode 100644 index 00000000..f30e9e8a --- /dev/null +++ b/prisma/migrations/20230809202431_cascade/migration.sql @@ -0,0 +1,17 @@ +-- DropForeignKey +ALTER TABLE "NetworkMemberNotation" DROP CONSTRAINT "NetworkMemberNotation_nodeid_fkey"; + +-- DropForeignKey +ALTER TABLE "Notation" DROP CONSTRAINT "Notation_nwid_fkey"; + +-- DropForeignKey +ALTER TABLE "network_members" DROP CONSTRAINT "network_members_nwid_fkey"; + +-- AddForeignKey +ALTER TABLE "network_members" ADD CONSTRAINT "network_members_nwid_fkey" FOREIGN KEY ("nwid") REFERENCES "network"("nwid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notation" ADD CONSTRAINT "Notation_nwid_fkey" FOREIGN KEY ("nwid") REFERENCES "network"("nwid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "NetworkMemberNotation" ADD CONSTRAINT "NetworkMemberNotation_nodeid_fkey" FOREIGN KEY ("nodeid") REFERENCES "network_members"("nodeid") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 21bee62c..2d380b10 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -55,7 +55,7 @@ enum Role { model network_members { nodeid Int @id @default(autoincrement()) id String - nwid_ref network @relation(fields: [nwid], references: [nwid]) + nwid_ref network @relation(fields: [nwid], references: [nwid], onDelete: Cascade) nwid String lastSeen DateTime? online Boolean? @default(false) @@ -93,7 +93,7 @@ model Notation { updatedTime DateTime @updatedAt isActive Boolean @default(true) nwid String - network network @relation(fields: [nwid], references: [nwid]) + network network @relation(fields: [nwid], references: [nwid], onDelete: Cascade) networkMembers NetworkMemberNotation[] icon String? orderIndex Int? @@ -106,7 +106,7 @@ model NetworkMemberNotation { notationId Int nodeid Int label Notation @relation(fields: [notationId], references: [id]) - member network_members @relation(fields: [nodeid], references: [nodeid]) + member network_members @relation(fields: [nodeid], references: [nodeid], onDelete: Cascade) @@id([notationId, nodeid]) } diff --git a/src/server/api/routers/networkRouter.ts b/src/server/api/routers/networkRouter.ts index 8d820263..6d36cf5e 100644 --- a/src/server/api/routers/networkRouter.ts +++ b/src/server/api/routers/networkRouter.ts @@ -212,25 +212,6 @@ export const networkRouter = createTRPCRouter({ ) .mutation(async ({ ctx, input }) => { try { - // Delete networkMembers - await ctx.prisma.network_members - .deleteMany({ - where: { - nwid: input.nwid, - }, - }) - .catch(() => []); - - // Delete network - await ctx.prisma.network - .deleteMany({ - where: { - authorId: ctx.session.user.id, - nwid: input.nwid, - }, - }) - .catch(() => []); - // Delete ZT network const createCentralNw = await ztController.network_delete( input.nwid, @@ -238,6 +219,14 @@ export const networkRouter = createTRPCRouter({ ); if (input.central) return createCentralNw; + + // Delete network + await ctx.prisma.network.deleteMany({ + where: { + authorId: ctx.session.user.id, + nwid: input.nwid, + }, + }); } catch (error) { if (error instanceof z.ZodError) { return throwError(`Invalid routes provided ${error.message}`);