import { MigrationInterface, QueryRunner } from "typeorm"

export class AlterTeamMemberAndIdProofEntity1745929097981 implements MigrationInterface {
  name = "AlterTeamMemberAndIdProofEntity1745929097981"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "emergency_contacts" ("id" SERIAL NOT NULL, "city_id" integer NOT NULL, "team_member_id" integer NOT NULL, "emergency_contact_name" character varying NOT NULL, "emergency_contact_code" character varying(5), "emergency_contact_number" character varying(15), "emergency_contact_address_line_1" character varying NOT NULL, "emergency_contact_address_line_2" character varying, "emergency_contact_country" character varying NOT NULL, "emergency_contact_state" character varying NOT NULL, "emergency_contact_zipcode" character varying NOT NULL, "emergency_contact_address_type" character varying NOT NULL, "deleted_at" TIMESTAMP, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), CONSTRAINT "PK_8be191845b6fca1c4e5ba5bd7d1" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ADD "is_emergency_contact" boolean DEFAULT false`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ADD "document_type" character varying`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ADD "document_number" character varying`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ADD "current_step" integer NOT NULL DEFAULT '1'`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ADD "form_status" character varying NOT NULL DEFAULT 'draft'`,
    )
    await queryRunner.query(
      `ALTER TABLE "emergency_contacts" ADD CONSTRAINT "FK_3484c8ea3a99b721f30db8589f9" FOREIGN KEY ("team_member_id") REFERENCES "team_members"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "emergency_contacts" ADD CONSTRAINT "FK_965e63b4420788b77f49089da1d" 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 "emergency_contacts" DROP CONSTRAINT "FK_965e63b4420788b77f49089da1d"`,
    )
    await queryRunner.query(
      `ALTER TABLE "emergency_contacts" DROP CONSTRAINT "FK_3484c8ea3a99b721f30db8589f9"`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" DROP COLUMN "form_status"`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" DROP COLUMN "current_step"`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" DROP COLUMN "document_number"`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" DROP COLUMN "document_type"`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" DROP COLUMN "is_emergency_contact"`,
    )
    await queryRunner.query(`DROP TABLE "emergency_contacts"`)
  }
}
