import { MigrationInterface, QueryRunner } from "typeorm"

export class AddEmployeeTechnologiesTable1776231931693 implements MigrationInterface {
  name = "AddEmployeeTechnologiesTable1776231931693"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "employee_technologies" ("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, "name" character varying(255) NOT NULL, "status" smallint NOT NULL DEFAULT '1', "company_id" integer NOT NULL, CONSTRAINT "UQ_e2849303dfacf0ec7c167b20ddc" UNIQUE ("name"), CONSTRAINT "PK_4196b4f2ba61c1ecd000299db43" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `CREATE TABLE "employee_technology_assignments" ("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, "technology_id" integer NOT NULL, "employee_id" integer NOT NULL, CONSTRAINT "PK_b2931ef907aaf50996f4ba624ab" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_technologies" ADD CONSTRAINT "FK_2936a6f03e55e24f717f31f5fa0" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_technology_assignments" ADD CONSTRAINT "FK_1a5a1364ef08eb42bb3adcaa082" FOREIGN KEY ("technology_id") REFERENCES "employee_technologies"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_technology_assignments" ADD CONSTRAINT "FK_ffda6622a00bda0ff3d56aef80c" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "employee_technology_assignments" DROP CONSTRAINT "FK_ffda6622a00bda0ff3d56aef80c"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_technology_assignments" DROP CONSTRAINT "FK_1a5a1364ef08eb42bb3adcaa082"`,
    )
    await queryRunner.query(
      `ALTER TABLE "employee_technologies" DROP CONSTRAINT "FK_2936a6f03e55e24f717f31f5fa0"`,
    )
    await queryRunner.query(`DROP TABLE "employee_technology_assignments"`)
    await queryRunner.query(`DROP TABLE "employee_technologies"`)
  }
}
