penisularhr / src / database / migrations / 1699447995349-create-sector-vehicle-name.ts
1699447995349-create-sector-vehicle-name.ts
Raw
/* eslint-disable max-len */
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
import { MigrationInterface, QueryRunner } from 'typeorm';

export class CreateSectorVehicleName1699447995349
  implements MigrationInterface
{
  name = 'CreateSectorVehicleName1699447995349';

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" RENAME COLUMN "vehicle_name" TO "vehicle_name_id"`,
    );
    await queryRunner.query(
      `ALTER TYPE "public"."vehicle_records_vehicle_name_enum" RENAME TO "vehicle_records_vehicle_name_id_enum"`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" RENAME COLUMN "sector" TO "sector_id"`,
    );
    await queryRunner.query(
      `CREATE TABLE "sectors" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, CONSTRAINT "UQ_1a10b192342e5165948f4dccefc" UNIQUE ("name"), CONSTRAINT "PK_923fdda0dc12f59add7b3a1782f" PRIMARY KEY ("id"))`,
    );
    await queryRunner.query(
      `CREATE TABLE "vehicle_names" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, "is_active" boolean NOT NULL DEFAULT true, CONSTRAINT "UQ_05346671ef1db62974af29838c9" UNIQUE ("name"), CONSTRAINT "PK_f84138ec8c11a8322802147bb5e" PRIMARY KEY ("id"))`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" DROP COLUMN "vehicle_name_id"`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" ADD "vehicle_name_id" uuid`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" DROP COLUMN "sector_id"`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" ADD "sector_id" uuid`,
    );
    await queryRunner.query(
      `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT '1.5'`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" ADD CONSTRAINT "vehicle_record_vehicle_name" FOREIGN KEY ("vehicle_name_id") REFERENCES "vehicle_names"("id") ON DELETE NO ACTION ON UPDATE CASCADE`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" ADD CONSTRAINT "activity_record_setting_sector" FOREIGN KEY ("sector_id") REFERENCES "sectors"("id") ON DELETE NO ACTION ON UPDATE CASCADE`,
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" DROP CONSTRAINT "activity_record_setting_sector"`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" DROP CONSTRAINT "vehicle_record_vehicle_name"`,
    );
    await queryRunner.query(
      `ALTER TABLE "ot_settings" ALTER COLUMN "extra_rate_per" SET DEFAULT 1.5`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" DROP COLUMN "sector_id"`,
    );
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" ADD "sector_id" character varying NOT NULL`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" DROP COLUMN "vehicle_name_id"`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" ADD "vehicle_name_id" "public"."vehicle_records_vehicle_name_id_enum" NOT NULL`,
    );
    await queryRunner.query(`DROP TABLE "vehicle_names"`);
    await queryRunner.query(`DROP TABLE "sectors"`);
    await queryRunner.query(
      `ALTER TABLE "activity_record_settings" RENAME COLUMN "sector_id" TO "sector"`,
    );
    await queryRunner.query(
      `ALTER TYPE "public"."vehicle_records_vehicle_name_id_enum" RENAME TO "vehicle_records_vehicle_name_enum"`,
    );
    await queryRunner.query(
      `ALTER TABLE "vehicle_records" RENAME COLUMN "vehicle_name_id" TO "vehicle_name"`,
    );
  }
}