From 43a0260cd8cbf691866e44a05cd36287d32cf965 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 13 Jan 2023 22:38:55 +1100 Subject: Fix guild delete failing when template exists --- src/util/entities/Template.ts | 2 +- .../mariadb/1673609465036-templateDeleteCascade.ts | 23 ++++++++++++++++++++++ .../mysql/1673609465036-templateDeleteCascade.ts | 23 ++++++++++++++++++++++ .../1673609867556-templateDeleteCascade.ts | 23 ++++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/util/migration/mariadb/1673609465036-templateDeleteCascade.ts create mode 100644 src/util/migration/mysql/1673609465036-templateDeleteCascade.ts create mode 100644 src/util/migration/postgresql/1673609867556-templateDeleteCascade.ts (limited to 'src/util') diff --git a/src/util/entities/Template.ts b/src/util/entities/Template.ts index 1d952283..7975e731 100644 --- a/src/util/entities/Template.ts +++ b/src/util/entities/Template.ts @@ -36,7 +36,7 @@ export class Template extends BaseClass { source_guild_id: string; @JoinColumn({ name: "source_guild_id" }) - @ManyToOne(() => Guild) + @ManyToOne(() => Guild, { onDelete: "CASCADE" }) source_guild: Guild; @Column({ type: "simple-json" }) diff --git a/src/util/migration/mariadb/1673609465036-templateDeleteCascade.ts b/src/util/migration/mariadb/1673609465036-templateDeleteCascade.ts new file mode 100644 index 00000000..3053b82b --- /dev/null +++ b/src/util/migration/mariadb/1673609465036-templateDeleteCascade.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class templateDeleteCascade1673609465036 implements MigrationInterface { + name = "templateDeleteCascade1673609465036"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE \`templates\` DROP FOREIGN KEY \`FK_445d00eaaea0e60a017a5ed0c11\``, + ); + await queryRunner.query( + `ALTER TABLE \`templates\` ADD CONSTRAINT \`FK_445d00eaaea0e60a017a5ed0c11\` FOREIGN KEY (\`source_guild_id\`) REFERENCES \`guilds\`(\`id\`) ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE \`templates\` DROP FOREIGN KEY \`FK_445d00eaaea0e60a017a5ed0c11\``, + ); + await queryRunner.query( + `ALTER TABLE \`templates\` ADD CONSTRAINT \`FK_445d00eaaea0e60a017a5ed0c11\` FOREIGN KEY (\`source_guild_id\`) REFERENCES \`guilds\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`, + ); + } +} diff --git a/src/util/migration/mysql/1673609465036-templateDeleteCascade.ts b/src/util/migration/mysql/1673609465036-templateDeleteCascade.ts new file mode 100644 index 00000000..3053b82b --- /dev/null +++ b/src/util/migration/mysql/1673609465036-templateDeleteCascade.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class templateDeleteCascade1673609465036 implements MigrationInterface { + name = "templateDeleteCascade1673609465036"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE \`templates\` DROP FOREIGN KEY \`FK_445d00eaaea0e60a017a5ed0c11\``, + ); + await queryRunner.query( + `ALTER TABLE \`templates\` ADD CONSTRAINT \`FK_445d00eaaea0e60a017a5ed0c11\` FOREIGN KEY (\`source_guild_id\`) REFERENCES \`guilds\`(\`id\`) ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE \`templates\` DROP FOREIGN KEY \`FK_445d00eaaea0e60a017a5ed0c11\``, + ); + await queryRunner.query( + `ALTER TABLE \`templates\` ADD CONSTRAINT \`FK_445d00eaaea0e60a017a5ed0c11\` FOREIGN KEY (\`source_guild_id\`) REFERENCES \`guilds\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`, + ); + } +} diff --git a/src/util/migration/postgresql/1673609867556-templateDeleteCascade.ts b/src/util/migration/postgresql/1673609867556-templateDeleteCascade.ts new file mode 100644 index 00000000..fdfbc05c --- /dev/null +++ b/src/util/migration/postgresql/1673609867556-templateDeleteCascade.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class templateDeleteCascade1673609867556 implements MigrationInterface { + name = "templateDeleteCascade1673609867556"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "templates" DROP CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11"`, + ); + await queryRunner.query( + `ALTER TABLE "templates" ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY ("source_guild_id") REFERENCES "guilds"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "templates" DROP CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11"`, + ); + await queryRunner.query( + `ALTER TABLE "templates" ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY ("source_guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`, + ); + } +} -- cgit 1.4.1