import { MigrationInterface, QueryRunner } from "typeorm"

export class CreateDepartmentsTable1762153819382 implements MigrationInterface {
  name = "CreateDepartmentsTable1762153819382"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "departments" ("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, "name" character varying(255) NOT NULL, "description" text, "status" smallint NOT NULL DEFAULT '1', CONSTRAINT "PK_839517a681a86bb84cbcc6a1e9d" PRIMARY KEY ("id"))`,
    )
    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 "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_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_541e3d07c93baa9cc42b149a5fb" 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 "departments" DROP CONSTRAINT "FK_541e3d07c93baa9cc42b149a5fb"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_b30a572ba0bff8098f704f27418"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_2a517743a9cd9c4afdef36ec033"`,
    )
    await queryRunner.query(
      `ALTER TABLE "departments" DROP CONSTRAINT "FK_e4fb15c173042ccd356099f69f6"`,
    )
    await queryRunner.query(`DROP TABLE "departments"`)
  }
}
