import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateTripAddonsJoinTable1752572793742 implements MigrationInterface {
  name = "CreateTripAddonsJoinTable1752572793742"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "trip_addons" ("trip_id" integer NOT NULL, "addon_id" integer NOT NULL, CONSTRAINT "PK_126f95f735ae03eed5b4ef5ba28" PRIMARY KEY ("trip_id", "addon_id"))`,
    )
    await queryRunner.query(
      `CREATE INDEX "IDX_0c6ddfcd0b0c930c8cfd19d55a" ON "trip_addons" ("trip_id") `,
    )
    await queryRunner.query(
      `CREATE INDEX "IDX_028fcd895755b8a2ff7d7ef093" ON "trip_addons" ("addon_id") `,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_addons" ADD CONSTRAINT "FK_0c6ddfcd0b0c930c8cfd19d55a0" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_addons" ADD CONSTRAINT "FK_028fcd895755b8a2ff7d7ef0933" FOREIGN KEY ("addon_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 "trip_addons" DROP CONSTRAINT "FK_028fcd895755b8a2ff7d7ef0933"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_addons" DROP CONSTRAINT "FK_0c6ddfcd0b0c930c8cfd19d55a0"`,
    )
    await queryRunner.query(
      `DROP INDEX "public"."IDX_028fcd895755b8a2ff7d7ef093"`,
    )
    await queryRunner.query(
      `DROP INDEX "public"."IDX_0c6ddfcd0b0c930c8cfd19d55a"`,
    )
    await queryRunner.query(`DROP TABLE "trip_addons"`)
  }
}
