import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateProjectCompletionLogsTable1769672498771 implements MigrationInterface {
  name = "CreateProjectCompletionLogsTable1769672498771"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "project_completion_logs" ("id" SERIAL NOT NULL, "project_id" integer NOT NULL, "old_percentage" numeric(5,2), "new_percentage" numeric(5,2) NOT NULL, "changed_by" integer NOT NULL, "changed_at" TIMESTAMP NOT NULL DEFAULT NOW(), CONSTRAINT "PK_a369b858ffcfd37d80110f548cc" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(`ALTER TABLE "projects" ADD "start_date" date`)
    await queryRunner.query(`ALTER TABLE "projects" ADD "end_date" date`)
    await queryRunner.query(
      `ALTER TABLE "projects" ADD "completion_percentage" numeric(5,2)`,
    )
    await queryRunner.query(
      `ALTER TABLE "project_completion_logs" ADD CONSTRAINT "FK_d3784fcf2354a1c0d73a47c65ac" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "project_completion_logs" ADD CONSTRAINT "FK_956db192f47f685cdcc98eba206" FOREIGN KEY ("changed_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "project_completion_logs" DROP CONSTRAINT "FK_956db192f47f685cdcc98eba206"`,
    )
    await queryRunner.query(
      `ALTER TABLE "project_completion_logs" DROP CONSTRAINT "FK_d3784fcf2354a1c0d73a47c65ac"`,
    )
    await queryRunner.query(
      `ALTER TABLE "projects" DROP COLUMN "completion_percentage"`,
    )
    await queryRunner.query(`ALTER TABLE "projects" DROP COLUMN "end_date"`)
    await queryRunner.query(`ALTER TABLE "projects" DROP COLUMN "start_date"`)
    await queryRunner.query(`DROP TABLE "project_completion_logs"`)
  }
}
