forked from Cutlery/immich
migration
This commit is contained in:
parent
09dce3815b
commit
a28330adf6
@ -10,6 +10,7 @@ import {
|
||||
ManyToMany,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryColumn,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
@ -68,4 +69,21 @@ export class AlbumEntity {
|
||||
|
||||
@Column({ type: 'varchar', default: AssetOrder.DESC })
|
||||
order!: AssetOrder;
|
||||
|
||||
@ManyToMany(() => AlbumEntity, (album) => album.parentAlbums)
|
||||
@JoinTable({ name: 'sub_albums', joinColumn: { name: 'childId' }, inverseJoinColumn: { name: 'parentId' } })
|
||||
parentAlbums!: AlbumEntity[];
|
||||
|
||||
@ManyToMany(() => AlbumEntity, (album) => album.childAlbums)
|
||||
@JoinTable({ name: 'sub_albums', joinColumn: { name: 'parentId' }, inverseJoinColumn: { name: 'childId' } })
|
||||
childAlbums!: AlbumEntity[];
|
||||
}
|
||||
|
||||
@Entity('sub_albums')
|
||||
export class SubAlbumEntity {
|
||||
@PrimaryColumn()
|
||||
parentId!: string;
|
||||
|
||||
@PrimaryColumn()
|
||||
childId!: string;
|
||||
}
|
||||
|
@ -0,0 +1,46 @@
|
||||
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"`);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user