import { MigrationInterface, QueryRunner } from "typeorm"

export class AddTripsTable1752489135851 implements MigrationInterface {
  name = "AddTripsTable1752489135851"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "trips" ("id" SERIAL NOT NULL, "client_id" integer, "client_contact_billing_id" integer, "client_booking_id" integer, "customer_id" integer, "customer_phone_number" character varying, "customer_email" character varying, "customer_country_code" character varying, "customer_ref_no" character varying, "trip_type_id" integer, "pick_up_date" character varying, "pick_up_time" character varying, "drop_off_date" character varying, "drop_off_time" character varying, "arrive_before" character varying, "pick_up_location" character varying, "drop_up_location" character varying, "pickup_location_type" character varying, "pickup_hospital_id" integer, "pickup_custom_address" character varying, "dropup_location_type" character varying, "dropup_hospital_id" integer, "dropup_custom_address" character varying, "service_details" character varying, "luggage_information" character varying, "no_of_taxi" character varying, "current_step" integer NOT NULL DEFAULT '1', "greet_customer" boolean, "greet_message" character varying, "is_trip_open" boolean, "promo_code" character varying, "additional_notes" character varying, "dispatch_note" character varying, "status" character varying NOT NULL DEFAULT 'active', "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, CONSTRAINT "PK_f71c231dee9c05a9522f9e840f5" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_d6f76c9f2ac9d54fa5e6ba58e7e" FOREIGN KEY ("client_id") REFERENCES "clients_companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_64cb2155b937a8be092ecd87476" FOREIGN KEY ("client_contact_billing_id") REFERENCES "client_company_contacts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_ce31e38cbc036f5fd59f5e35ca7" FOREIGN KEY ("client_booking_id") REFERENCES "client_company_contacts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_f0e4330632fee01b8cc91f2b0d8" FOREIGN KEY ("customer_id") REFERENCES "customers"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_91e11bb738b257d378ef99198c8" FOREIGN KEY ("trip_type_id") REFERENCES "trip_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_51519a308bcd3fd374e94e4dcc0" FOREIGN KEY ("pickup_hospital_id") REFERENCES "hospitals"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" ADD CONSTRAINT "FK_eb6e01850ca892acbfacc346ccb" FOREIGN KEY ("dropup_hospital_id") REFERENCES "hospitals"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_eb6e01850ca892acbfacc346ccb"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_51519a308bcd3fd374e94e4dcc0"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_91e11bb738b257d378ef99198c8"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_f0e4330632fee01b8cc91f2b0d8"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_ce31e38cbc036f5fd59f5e35ca7"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_64cb2155b937a8be092ecd87476"`,
    )
    await queryRunner.query(
      `ALTER TABLE "trips" DROP CONSTRAINT "FK_d6f76c9f2ac9d54fa5e6ba58e7e"`,
    )
    await queryRunner.query(`DROP TABLE "trips"`)
  }
}
