From ade27174f2b2e5a0c0fe3e22668b59f55b8366c4 Mon Sep 17 00:00:00 2001 From: Dmitryii Osipov Date: Wed, 31 May 2023 12:52:20 +0400 Subject: [PATCH] Make owner field of Program nullable (#1296) --- .../src/database/entities/program.entity.ts | 2 +- .../1685519228764-nullable-owner.ts | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 idea/indexer/src/database/migrations/1685519228764-nullable-owner.ts diff --git a/idea/indexer/src/database/entities/program.entity.ts b/idea/indexer/src/database/entities/program.entity.ts index 7ac641ccc3..8794799b20 100644 --- a/idea/indexer/src/database/entities/program.entity.ts +++ b/idea/indexer/src/database/entities/program.entity.ts @@ -16,7 +16,7 @@ export class Program extends BaseEntity implements IProgram { public id: string; @Index() - @Column() + @Column({ nullable: true }) public owner: string; @Column() diff --git a/idea/indexer/src/database/migrations/1685519228764-nullable-owner.ts b/idea/indexer/src/database/migrations/1685519228764-nullable-owner.ts new file mode 100644 index 0000000000..18d4454f77 --- /dev/null +++ b/idea/indexer/src/database/migrations/1685519228764-nullable-owner.ts @@ -0,0 +1,80 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class nullableOwner1685519228764 implements MigrationInterface { + name = 'nullableOwner1685519228764' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "owner" DROP NOT NULL + `); + await queryRunner.query(` + ALTER TYPE "public"."program_type_enum" + RENAME TO "program_type_enum_old" + `); + await queryRunner.query(` + CREATE TYPE "public"."program_type_enum" AS ENUM( + 'unknown', + 'programSet', + 'active', + 'terminated', + 'exited', + 'paused' + ) + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" DROP DEFAULT + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" TYPE "public"."program_type_enum" USING "type"::"text"::"public"."program_type_enum" + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" + SET DEFAULT 'unknown' + `); + await queryRunner.query(` + DROP TYPE "public"."program_type_enum_old" + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TYPE "public"."program_type_enum_old" AS ENUM( + 'unknown', + 'active', + 'terminated', + 'exited', + 'paused' + ) + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" DROP DEFAULT + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" TYPE "public"."program_type_enum_old" USING "type"::"text"::"public"."program_type_enum_old" + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "type" + SET DEFAULT 'unknown' + `); + await queryRunner.query(` + DROP TYPE "public"."program_type_enum" + `); + await queryRunner.query(` + ALTER TYPE "public"."program_type_enum_old" + RENAME TO "program_type_enum" + `); + await queryRunner.query(` + ALTER TABLE "program" + ALTER COLUMN "owner" + SET NOT NULL + `); + } + +}