import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateTripEscortJoinTable1752825661580 implements MigrationInterface {
  name = "CreateTripEscortJoinTable1752825661580"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "trip_escorts" ("trip_id" integer NOT NULL, "escort_id" integer NOT NULL, CONSTRAINT "PK_5c2a11165e01d7798c8cb32cfd0" PRIMARY KEY ("trip_id", "escort_id"))`,
    )
    await queryRunner.query(
      `CREATE INDEX "IDX_d8a7d33cd5ba6f92302e1e9b78" ON "trip_escorts" ("trip_id") `,
    )
    await queryRunner.query(
      `CREATE INDEX "IDX_5d5fd7796999000a22f60efae6" ON "trip_escorts" ("escort_id") `,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_escorts" ADD CONSTRAINT "FK_d8a7d33cd5ba6f92302e1e9b78e" FOREIGN KEY ("trip_id") REFERENCES "trips"("id") ON DELETE CASCADE ON UPDATE CASCADE`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_escorts" ADD CONSTRAINT "FK_5d5fd7796999000a22f60efae61" FOREIGN KEY ("escort_id") REFERENCES "escort"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "trip_escorts" DROP CONSTRAINT "FK_5d5fd7796999000a22f60efae61"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trip_escorts" DROP CONSTRAINT "FK_d8a7d33cd5ba6f92302e1e9b78e"`,
    )
    await queryRunner.query(
      `DROP INDEX "public"."IDX_5d5fd7796999000a22f60efae6"`,
    )
    await queryRunner.query(
      `DROP INDEX "public"."IDX_d8a7d33cd5ba6f92302e1e9b78"`,
    )
    await queryRunner.query(`DROP TABLE "trip_escorts"`)
  }
}
