import { MigrationInterface, QueryRunner } from "typeorm"

export class AddFleetOperationsTable1748957407217 implements MigrationInterface {
  name = "AddFleetOperationsTable1748957407217"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "add_on_vehicle_models" DROP CONSTRAINT "FK_e2e5913137978f80917296b8f28"`,
    )
    await queryRunner.query(
      `CREATE TABLE "fleet_operations" ("id" SERIAL NOT NULL, "car_code" character varying NOT NULL, "vehicle_manufacture_id" integer NOT NULL, "vehicle_model_id" integer NOT NULL, "year" character varying NOT NULL, "color" character varying NOT NULL, "registration_number" character varying NOT NULL, "state" integer NOT NULL, "vin_number" character varying NOT NULL, "odo_reader" integer NOT NULL, "unit" character varying NOT NULL, "status" character varying NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, "assigned_driver" integer, CONSTRAINT "PK_8a7ebb2dad470b4264274405ae1" PRIMARY KEY ("id"))`,
    )
    // await queryRunner.query(`ALTER TABLE "permissions" ADD "status" integer`);
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" ADD CONSTRAINT "FK_ce9c18be005717c9b16775d194e" FOREIGN KEY ("vehicle_manufacture_id") REFERENCES "vehicle_manufactures"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" ADD CONSTRAINT "FK_cd01813ac60c974061e69631e16" FOREIGN KEY ("vehicle_model_id") REFERENCES "vehicle_models"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" ADD CONSTRAINT "FK_337cce9aca5295765cd82d3dcc6" FOREIGN KEY ("assigned_driver") REFERENCES "team_members"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_on_vehicle_models" ADD CONSTRAINT "FK_e2e5913137978f80917296b8f28" FOREIGN KEY ("add_on_id") REFERENCES "add_ons"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "add_on_vehicle_models" DROP CONSTRAINT "FK_e2e5913137978f80917296b8f28"`,
    )
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" DROP CONSTRAINT "FK_337cce9aca5295765cd82d3dcc6"`,
    )
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" DROP CONSTRAINT "FK_cd01813ac60c974061e69631e16"`,
    )
    await queryRunner.query(
      `ALTER TABLE "fleet_operations" DROP CONSTRAINT "FK_ce9c18be005717c9b16775d194e"`,
    )
    // await queryRunner.query(`ALTER TABLE "permissions" DROP COLUMN "status"`)
    await queryRunner.query(`DROP TABLE "fleet_operations"`)
    await queryRunner.query(
      `ALTER TABLE "add_on_vehicle_models" ADD CONSTRAINT "FK_e2e5913137978f80917296b8f28" FOREIGN KEY ("add_on_id") REFERENCES "add_ons"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
    )
  }
}
