import { MigrationInterface, QueryRunner } from "typeorm"

export class Rating1755523235792 implements MigrationInterface {
  name = "Rating1755523235792"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "ratings" ("id" SERIAL NOT NULL, "rater_id" integer NOT NULL, "rated_id" integer NOT NULL, "trip_id" integer NOT NULL, "rating" integer NOT NULL, "other_input" text, "rating_type" character varying(50) NOT NULL, "tags" json, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_7cc5858b45adf495eab8c56d48e" UNIQUE ("rater_id", "rated_id", "trip_id"), CONSTRAINT "PK_0f31425b073219379545ad68ed9" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD "trip_otp" character varying`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" DROP CONSTRAINT "FK_0bb15fd4cd73e133513b02e574b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" ALTER COLUMN "fleet_type_id" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "ratings" ADD CONSTRAINT "FK_9433e63629915a4e102a3462b74" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" ADD CONSTRAINT "FK_0bb15fd4cd73e133513b02e574b" FOREIGN KEY ("fleet_type_id") REFERENCES "vehicle_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" DROP CONSTRAINT "FK_0bb15fd4cd73e133513b02e574b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "ratings" DROP CONSTRAINT "FK_9433e63629915a4e102a3462b74"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" ALTER COLUMN "fleet_type_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_fleet_assignments" ADD CONSTRAINT "FK_0bb15fd4cd73e133513b02e574b" FOREIGN KEY ("fleet_type_id") REFERENCES "vehicle_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(`ALTER TABLE "trips" DROP COLUMN "trip_otp"`)
    await queryRunner.query(`DROP TABLE "ratings"`)
  }
}
