import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateEmployeeSalaryHistoryTable1763029197369 implements MigrationInterface {
  name = "CreateEmployeeSalaryHistoryTable1763029197369"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "employee_salary_history" ("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, "employee_id" integer NOT NULL, "company_id" integer NOT NULL, "from_date" date NOT NULL, "to_date" date, "gross_salary" numeric(10,2) NOT NULL, "basic_salary" numeric(10,2) NOT NULL, "total_earnings" numeric(10,2) NOT NULL, "total_deductions" numeric(10,2) NOT NULL, "net_payable_salary" numeric(10,2) NOT NULL, "basic_salary_percentage" character varying(10) NOT NULL, "notes" text, CONSTRAINT "PK_0d0766845b70e91af5656e03d2f" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD "gross_salary" numeric(10,2)`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD "basic_salary" numeric(10,2)`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" ADD "net_payable_salary" numeric(10,2)`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" ADD "basic_salary_percentage" character varying(10)`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_history" ADD CONSTRAINT "FK_7e48dda472a1ee8f1e216fd46df" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_history" ADD CONSTRAINT "FK_1cf4c35f3488ba179dc66917b7b" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "employee_salary_history" DROP CONSTRAINT "FK_1cf4c35f3488ba179dc66917b7b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_salary_history" DROP CONSTRAINT "FK_7e48dda472a1ee8f1e216fd46df"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" DROP COLUMN "basic_salary_percentage"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP COLUMN "net_payable_salary"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP COLUMN "basic_salary"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employees" DROP COLUMN "gross_salary"`,
    )
    await queryRunner.query(`DROP TABLE "employee_salary_history"`)
  }
}
