import { MigrationInterface, QueryRunner } from "typeorm"

export class AppMaintenance1756795583352 implements MigrationInterface {
  name = "AppMaintenance1756795583352"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "app_version" ADD "maintenance" boolean NOT NULL DEFAULT false`,
    )
    await queryRunner.query(
      `ALTER TABLE "app_version" ADD "alert" boolean NOT NULL DEFAULT false`,
    )
    await queryRunner.query(
      `ALTER TABLE "app_version" ADD "alert_message" text`,
    )
    await queryRunner.query(
      `ALTER TABLE "app_version" ALTER COLUMN "release_notes" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" DROP CONSTRAINT "FK_59348d9c7001c6e71b606d93ad1"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ALTER COLUMN "trip_id" TYPE integer USING "trip_id"::integer`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ALTER COLUMN "trip_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ADD CONSTRAINT "FK_59348d9c7001c6e71b606d93ad1" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" DROP CONSTRAINT "FK_59348d9c7001c6e71b606d93ad1"`,
    )
    await queryRunner.query(
      `ALTER TABLE "app_version" ALTER COLUMN "release_notes" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ALTER COLUMN "trip_id" TYPE bigint USING "trip_id"::bigint`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ALTER COLUMN "trip_id" SET NOT NULL`,
    )

    await queryRunner.query(
      `ALTER TABLE "trip_cancellations" ADD CONSTRAINT "FK_59348d9c7001c6e71b606d93ad1" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "app_version" DROP COLUMN "alert_message"`,
    )
    await queryRunner.query(`ALTER TABLE "app_version" DROP COLUMN "alert"`)
    await queryRunner.query(
      `ALTER TABLE "app_version" DROP COLUMN "maintenance"`,
    )
  }
}
