import { MigrationInterface, QueryRunner } from "typeorm"

export class AlterTeamMemberAndIdProofEntityAddNull1746004199660 implements MigrationInterface {
  name = "AlterTeamMemberAndIdProofEntityAddNull1746004199660"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "id_proofs" DROP CONSTRAINT "FK_4259881c27650007ba176faece5"`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ALTER COLUMN "team_member_id" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" DROP CONSTRAINT "FK_7a4dbecafed7033ca58a453a42e"`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "role_id" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "first_name" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "last_name" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "email" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "phone_number" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "emergency_contact_name" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "joining_date" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" DROP CONSTRAINT "FK_baebeb388634106e4cbb46192b9"`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" DROP CONSTRAINT "FK_63dbbe54184e1ffed53d29cf01a"`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "city_id" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "team_member_id" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "address_line_1" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "country" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "state" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "zipcode" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "address_type" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "is_emergency_contact" SET DEFAULT true`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ADD CONSTRAINT "FK_4259881c27650007ba176faece5" FOREIGN KEY ("team_member_id") REFERENCES "team_members"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ADD CONSTRAINT "FK_7a4dbecafed7033ca58a453a42e" FOREIGN KEY ("role_id") REFERENCES "roles"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ADD CONSTRAINT "FK_63dbbe54184e1ffed53d29cf01a" FOREIGN KEY ("team_member_id") REFERENCES "team_members"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ADD CONSTRAINT "FK_baebeb388634106e4cbb46192b9" 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 "addresses" DROP CONSTRAINT "FK_baebeb388634106e4cbb46192b9"`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" DROP CONSTRAINT "FK_63dbbe54184e1ffed53d29cf01a"`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" DROP CONSTRAINT "FK_7a4dbecafed7033ca58a453a42e"`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" DROP CONSTRAINT "FK_4259881c27650007ba176faece5"`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "is_emergency_contact" SET DEFAULT false`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "address_type" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "zipcode" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "state" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "country" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "address_line_1" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "team_member_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ALTER COLUMN "city_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ADD CONSTRAINT "FK_63dbbe54184e1ffed53d29cf01a" FOREIGN KEY ("team_member_id") REFERENCES "team_members"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "addresses" ADD CONSTRAINT "FK_baebeb388634106e4cbb46192b9" FOREIGN KEY ("city_id") REFERENCES "cities"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "joining_date" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "emergency_contact_name" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "phone_number" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "email" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "last_name" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "first_name" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ALTER COLUMN "role_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "team_members" ADD CONSTRAINT "FK_7a4dbecafed7033ca58a453a42e" FOREIGN KEY ("role_id") REFERENCES "roles"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ALTER COLUMN "team_member_id" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "id_proofs" ADD CONSTRAINT "FK_4259881c27650007ba176faece5" FOREIGN KEY ("team_member_id") REFERENCES "team_members"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
  }
}
