import { MigrationInterface, QueryRunner } from "typeorm"

export class AddCustomersTable1752062833938 implements MigrationInterface {
  name = "AddCustomersTable1752062833938"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "customers" ("id" SERIAL NOT NULL, "client_id" integer, "client_contact_id" integer, "city_id" integer, "state_id" integer, "country_id" integer, "hospital_id" integer, "vehicle_type_id" integer, "customer_name" character varying, "date_of_birth" character varying, "gender" character varying, "primary_address" character varying, "secondary_address" character varying, "zip_code" character varying, "country_code" character varying, "phone_number" character varying, "email" character varying, "visa_start_date" character varying, "visa_end_date" character varying, "reference_number" character varying, "prn_number" character varying, "episode" character varying, "log_date" character varying, "letter_of_guarantee" character varying, "is_medical_tourist" boolean NOT NULL DEFAULT false, "department" character varying, "job_title" character varying, "status" character varying NOT NULL DEFAULT 'active', "current_step" integer NOT NULL DEFAULT '1', "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, CONSTRAINT "PK_133ec679a801fab5e070f73d3ea" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_0bc3de99d31ef0cbe99756022f7" FOREIGN KEY ("client_id") REFERENCES "clients_companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_aa98fb187e25ae1e3e79e9a0c99" FOREIGN KEY ("client_contact_id") REFERENCES "client_company_contacts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_41c12896f1dca3dbab30b32119f" FOREIGN KEY ("city_id") REFERENCES "cities"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_eb8df86f039ec0527a50f997e5f" FOREIGN KEY ("state_id") REFERENCES "states"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_4ed5776248b263145310348bb6a" FOREIGN KEY ("country_id") REFERENCES "countries"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_e5300e6912fd34c284d854f7931" FOREIGN KEY ("hospital_id") REFERENCES "hospitals"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" ADD CONSTRAINT "FK_03ae026bb366538abbfabfb68f7" FOREIGN KEY ("vehicle_type_id") REFERENCES "vehicle_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_03ae026bb366538abbfabfb68f7"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_e5300e6912fd34c284d854f7931"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_4ed5776248b263145310348bb6a"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_eb8df86f039ec0527a50f997e5f"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_41c12896f1dca3dbab30b32119f"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_aa98fb187e25ae1e3e79e9a0c99"`,
    )
    await queryRunner.query(
      `ALTER TABLE "customers" DROP CONSTRAINT "FK_0bc3de99d31ef0cbe99756022f7"`,
    )
    await queryRunner.query(`DROP TABLE "customers"`)
  }
}
