1
0
forked from Cutlery/immich

simplify migration

This commit is contained in:
Alex Tran 2024-04-02 23:40:23 -05:00
parent 6e868184aa
commit 27421c908b
3 changed files with 43 additions and 70 deletions

View File

@ -71,19 +71,35 @@ export class AlbumEntity {
order!: AssetOrder;
@ManyToMany(() => AlbumEntity, (album) => album.parentAlbums)
@JoinTable({ name: 'sub_albums', joinColumn: { name: 'childId' }, inverseJoinColumn: { name: 'parentId' } })
@JoinTable({
name: 'sub_albums',
joinColumn: { name: 'childId' },
inverseJoinColumn: { name: 'parentId' },
synchronize: false,
})
parentAlbums!: AlbumEntity[];
@ManyToMany(() => AlbumEntity, (album) => album.childAlbums)
@JoinTable({ name: 'sub_albums', joinColumn: { name: 'parentId' }, inverseJoinColumn: { name: 'childId' } })
@JoinTable({
name: 'sub_albums',
joinColumn: { name: 'parentId' },
inverseJoinColumn: { name: 'childId' },
synchronize: false,
})
childAlbums!: AlbumEntity[];
}
@Entity('sub_albums')
@Entity('sub_albums', { synchronize: false })
export class SubAlbumEntity {
@PrimaryColumn()
parentId!: string;
@PrimaryColumn()
childId!: string;
@ManyToOne(() => AlbumEntity, (album) => album.childAlbums, { onDelete: 'CASCADE' })
parent!: AlbumEntity;
@ManyToOne(() => AlbumEntity, (album) => album.parentAlbums, { onDelete: 'CASCADE' })
child!: AlbumEntity;
}

View File

@ -1,67 +0,0 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
export class AddNestedAlbumRelationship1712100663844 implements MigrationInterface {
name = 'AddNestedAlbumRelationship1712100663844';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "sub_albums" ("parentId" character varying NOT NULL, "childId" character varying NOT NULL, CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d" PRIMARY KEY ("parentId", "childId"))`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_6aa094f6f0d888c90c418a14d70" PRIMARY KEY ("parentId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP COLUMN "childId"`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD "childId" uuid NOT NULL`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_6aa094f6f0d888c90c418a14d70"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d" PRIMARY KEY ("parentId", "childId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_b0b854d4c62ed6a4a46cff3b6b9" PRIMARY KEY ("childId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP COLUMN "parentId"`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD "parentId" uuid NOT NULL`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_b0b854d4c62ed6a4a46cff3b6b9"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d" PRIMARY KEY ("childId", "parentId")`,
);
await queryRunner.query(`CREATE INDEX "IDX_b0b854d4c62ed6a4a46cff3b6b" ON "sub_albums" ("childId") `);
await queryRunner.query(`CREATE INDEX "IDX_6aa094f6f0d888c90c418a14d7" ON "sub_albums" ("parentId") `);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9" FOREIGN KEY ("childId") REFERENCES "albums"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70" FOREIGN KEY ("parentId") REFERENCES "albums"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70"`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9"`);
await queryRunner.query(`DROP INDEX "public"."IDX_6aa094f6f0d888c90c418a14d7"`);
await queryRunner.query(`DROP INDEX "public"."IDX_b0b854d4c62ed6a4a46cff3b6b"`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_b0b854d4c62ed6a4a46cff3b6b9" PRIMARY KEY ("childId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP COLUMN "parentId"`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD "parentId" character varying NOT NULL`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_b0b854d4c62ed6a4a46cff3b6b9"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d" PRIMARY KEY ("parentId", "childId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_6aa094f6f0d888c90c418a14d70" PRIMARY KEY ("parentId")`,
);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP COLUMN "childId"`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD "childId" character varying NOT NULL`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "PK_6aa094f6f0d888c90c418a14d70"`);
await queryRunner.query(
`ALTER TABLE "sub_albums" ADD CONSTRAINT "PK_bd5df025a7a641b10bce219dc8d" PRIMARY KEY ("parentId", "childId")`,
);
await queryRunner.query(`DROP TABLE "sub_albums"`);
}
}

View File

@ -0,0 +1,24 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddNestedAlbumRelationship1712118617647 implements MigrationInterface {
name = 'AddNestedAlbumRelationship1712118617647'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9"`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70"`);
await queryRunner.query(`CREATE INDEX "IDX_b0b854d4c62ed6a4a46cff3b6b" ON "sub_albums" ("childId") `);
await queryRunner.query(`CREATE INDEX "IDX_6aa094f6f0d888c90c418a14d7" ON "sub_albums" ("parentId") `);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70" FOREIGN KEY ("parentId") REFERENCES "albums"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9" FOREIGN KEY ("childId") REFERENCES "albums"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9"`);
await queryRunner.query(`ALTER TABLE "sub_albums" DROP CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70"`);
await queryRunner.query(`DROP INDEX "public"."IDX_6aa094f6f0d888c90c418a14d7"`);
await queryRunner.query(`DROP INDEX "public"."IDX_b0b854d4c62ed6a4a46cff3b6b"`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_6aa094f6f0d888c90c418a14d70" FOREIGN KEY ("parentId") REFERENCES "albums"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE "sub_albums" ADD CONSTRAINT "FK_b0b854d4c62ed6a4a46cff3b6b9" FOREIGN KEY ("childId") REFERENCES "albums"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
}