import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateLeaveRequestApprovalLogsTable1770202640330 implements MigrationInterface {
  name = "CreateLeaveRequestApprovalLogsTable1770202640330"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "leave_request_approval_logs" ("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, "leave_request_id" integer NOT NULL, "action" character varying(10) NOT NULL, "approved_by" integer, "rejected_by" integer, "reject_reason" text, "company_id" integer NOT NULL, CONSTRAINT "PK_4adb204ae0708706706a3d02eac" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" ADD "final_approval_by" integer`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" ADD CONSTRAINT "FK_0e583b1bce5a57a8c3c6699467e" FOREIGN KEY ("leave_request_id") REFERENCES "leave_requests"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" ADD CONSTRAINT "FK_354e8cf0145d7d9be089b475e72" FOREIGN KEY ("approved_by") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" ADD CONSTRAINT "FK_c90422aabba95ed0b173f93c483" FOREIGN KEY ("rejected_by") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" ADD CONSTRAINT "FK_82152c67d67ef0429403299db27" 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 "leave_request_approval_logs" DROP CONSTRAINT "FK_82152c67d67ef0429403299db27"`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" DROP CONSTRAINT "FK_c90422aabba95ed0b173f93c483"`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" DROP CONSTRAINT "FK_354e8cf0145d7d9be089b475e72"`,
    )
    await queryRunner.query(
      `ALTER TABLE "leave_request_approval_logs" DROP CONSTRAINT "FK_0e583b1bce5a57a8c3c6699467e"`,
    )
    await queryRunner.query(
      `ALTER TABLE "company_settings" DROP COLUMN "final_approval_by"`,
    )
    await queryRunner.query(`DROP TABLE "leave_request_approval_logs"`)
  }
}
