import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateEmployeesTable1762167151145 implements MigrationInterface {
  name = "CreateEmployeesTable1762167151145"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "users" DROP CONSTRAINT "FK_f32b1cb14a9920477bcfd63df2c"`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" DROP CONSTRAINT "FK_b75c92ef36f432fe68ec300a7d4"`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" DROP CONSTRAINT "FK_021e2c9d9dca9f0885e8d738326"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_e4fb15c173042ccd356099f69f6"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_2a517743a9cd9c4afdef36ec033"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_b30a572ba0bff8098f704f27418"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" DROP CONSTRAINT "FK_fb248a705de5a0b7dcc01b75c86"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" DROP CONSTRAINT "FK_b65157daa96b4951594aaca3283"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" DROP CONSTRAINT "FK_21fef09158da434fbd342fdda7b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" DROP CONSTRAINT "FK_b85fbb30611c8ffa862d86d75d2"`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" DROP CONSTRAINT "FK_905bf64b06bdfa8c7d604ff09b0"`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" DROP CONSTRAINT "FK_a9e433f04916887a19b98bb19cd"`,
    )
    await queryRunner.query(
      `ALTER TABLE "activity_types" DROP CONSTRAINT "FK_1eafaf5a36b39e60075e7c97ce2"`,
    )
    await queryRunner.query(
      `ALTER TABLE "activity_types" DROP CONSTRAINT "FK_f5912797de15c35175fb79fb8e4"`,
    )
    await queryRunner.query(
      `ALTER TABLE "activity_types" DROP CONSTRAINT "FK_c19cfe6f118989b4682c0914877"`,
    )
    await queryRunner.query(
      `CREATE TABLE "salary_settings" ("created_by" integer, "updated_by" integer, "deleted_by" integer, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, "id" SERIAL NOT NULL, "company_id" integer NOT NULL, "type" character varying(255) NOT NULL, "type_value" character varying(255) NOT NULL, "value" character varying(255) NOT NULL, CONSTRAINT "PK_ef0271ad531d6459800c64e98d3" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `CREATE TABLE "employees" ("created_by" integer, "updated_by" integer, "deleted_by" integer, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), "deleted_at" TIMESTAMP, "id" SERIAL NOT NULL, "company_id" integer NOT NULL, "department_id" integer, "role_id" integer NOT NULL, "first_name" character varying(255) NOT NULL, "last_name" character varying(255), "email" character varying(255), "contact_no" character varying(255), "joining_date" date, "last_login_at" TIMESTAMP, "status" smallint NOT NULL DEFAULT '1', CONSTRAINT "PK_b9535a98350d5b26e7eb0c26af4" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `CREATE TABLE "employee_salary_details" ("id" SERIAL NOT NULL, "employee_id" integer NOT NULL, "salary_setting_id" integer NOT NULL, "gross_salary" numeric(10,2) NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(), CONSTRAINT "PK_52580206ea93b686b41a1107ceb" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "salary_settings" ADD CONSTRAINT "FK_05166fdf1a0ef3dfe10fa3e6848" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD CONSTRAINT "FK_7f3eeef59eece4147effe7bfa6a" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD CONSTRAINT "FK_678a3540f843823784b0fe4a4f2" FOREIGN KEY ("department_id") REFERENCES "departments"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD CONSTRAINT "FK_727d9c30d77d3a253177b2e918f" FOREIGN KEY ("role_id") REFERENCES "roles"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_details" ADD CONSTRAINT "FK_269e22a19b7cfb29f5ef1d316a8" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_details" ADD CONSTRAINT "FK_6a71163b864602b006eafaef322" FOREIGN KEY ("salary_setting_id") REFERENCES "salary_settings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "employee_salary_details" DROP CONSTRAINT "FK_6a71163b864602b006eafaef322"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_details" DROP CONSTRAINT "FK_269e22a19b7cfb29f5ef1d316a8"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP CONSTRAINT "FK_727d9c30d77d3a253177b2e918f"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP CONSTRAINT "FK_678a3540f843823784b0fe4a4f2"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP CONSTRAINT "FK_7f3eeef59eece4147effe7bfa6a"`,
    )
    await queryRunner.query(
      `ALTER TABLE "salary_settings" DROP CONSTRAINT "FK_05166fdf1a0ef3dfe10fa3e6848"`,
    )
    await queryRunner.query(`DROP TABLE "employee_salary_details"`)
    await queryRunner.query(`DROP TABLE "employees"`)
    await queryRunner.query(`DROP TABLE "salary_settings"`)
    await queryRunner.query(
      `ALTER TABLE "activity_types" ADD CONSTRAINT "FK_c19cfe6f118989b4682c0914877" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "activity_types" ADD CONSTRAINT "FK_f5912797de15c35175fb79fb8e4" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "activity_types" ADD CONSTRAINT "FK_1eafaf5a36b39e60075e7c97ce2" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" ADD CONSTRAINT "FK_a9e433f04916887a19b98bb19cd" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" ADD CONSTRAINT "FK_905bf64b06bdfa8c7d604ff09b0" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "blacklisted_tokens" ADD CONSTRAINT "FK_b85fbb30611c8ffa862d86d75d2" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" ADD CONSTRAINT "FK_21fef09158da434fbd342fdda7b" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" ADD CONSTRAINT "FK_b65157daa96b4951594aaca3283" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" ADD CONSTRAINT "FK_fb248a705de5a0b7dcc01b75c86" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" ADD CONSTRAINT "FK_b30a572ba0bff8098f704f27418" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" ADD CONSTRAINT "FK_2a517743a9cd9c4afdef36ec033" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" ADD CONSTRAINT "FK_e4fb15c173042ccd356099f69f6" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" ADD CONSTRAINT "FK_021e2c9d9dca9f0885e8d738326" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" ADD CONSTRAINT "FK_b75c92ef36f432fe68ec300a7d4" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" ADD CONSTRAINT "FK_f32b1cb14a9920477bcfd63df2c" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }
}
