import { MigrationInterface, QueryRunner } from "typeorm"

export class AddEntityForAddOnsPricing1755595577248 implements MigrationInterface {
  name = "AddEntityForAddOnsPricing1755595577248"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "add_ons_pricing" ("id" SERIAL NOT NULL, "plan_id" integer NOT NULL, "vehicle_type_id" integer NOT NULL, "add_on_id" integer NOT NULL, "city_id" integer, "price" numeric(10,2) NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "deleted_at" TIMESTAMP, CONSTRAINT "PK_45def565708a4b953e1ffc1dcef" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" ADD CONSTRAINT "FK_fb979d800a8c4f747cff6b8f160" FOREIGN KEY ("plan_id") REFERENCES "pricing_plans"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" ADD CONSTRAINT "FK_b9765dc64c8abc01f31acf3c560" FOREIGN KEY ("vehicle_type_id") REFERENCES "vehicle_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" ADD CONSTRAINT "FK_8dccc9e3bfeacc07077788bb74d" FOREIGN KEY ("add_on_id") REFERENCES "add_ons"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" ADD CONSTRAINT "FK_3a14b2a98497180439b018b03cf" FOREIGN KEY ("city_id") REFERENCES "cities"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" DROP CONSTRAINT "FK_3a14b2a98497180439b018b03cf"`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" DROP CONSTRAINT "FK_8dccc9e3bfeacc07077788bb74d"`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" DROP CONSTRAINT "FK_b9765dc64c8abc01f31acf3c560"`,
    )
    await queryRunner.query(
      `ALTER TABLE "add_ons_pricing" DROP CONSTRAINT "FK_fb979d800a8c4f747cff6b8f160"`,
    )
    await queryRunner.query(`DROP TABLE "add_ons_pricing"`)
  }
}
