import { MigrationInterface, QueryRunner } from "typeorm"

export class AddCompanyIdFieldToRoles1762233353427 implements MigrationInterface {
  name = "AddCompanyIdFieldToRoles1762233353427"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`ALTER TABLE "roles" ADD "created_by" integer`)
    await queryRunner.query(`ALTER TABLE "roles" ADD "updated_by" integer`)
    await queryRunner.query(`ALTER TABLE "roles" ADD "deleted_by" integer`)
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "created_at" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "created_at" SET DEFAULT NOW()`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "updated_at" SET NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "updated_at" SET DEFAULT NOW()`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "status" SET DEFAULT '1'`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ADD CONSTRAINT "FK_4a39f3095781cdd9d6061afaae5" FOREIGN KEY ("created_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ADD CONSTRAINT "FK_747b580d73db0ad78963d78b076" FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ADD CONSTRAINT "FK_6afbac9a2aa8004821807ed92c8" FOREIGN KEY ("deleted_by") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "roles" DROP CONSTRAINT "FK_6afbac9a2aa8004821807ed92c8"`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" DROP CONSTRAINT "FK_747b580d73db0ad78963d78b076"`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" DROP CONSTRAINT "FK_4a39f3095781cdd9d6061afaae5"`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "status" DROP DEFAULT`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "updated_at" SET DEFAULT now()`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "updated_at" DROP NOT NULL`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "created_at" SET DEFAULT now()`,
    )
    await queryRunner.query(
      `ALTER TABLE "roles" ALTER COLUMN "created_at" DROP NOT NULL`,
    )
    await queryRunner.query(`ALTER TABLE "roles" DROP COLUMN "deleted_by"`)
    await queryRunner.query(`ALTER TABLE "roles" DROP COLUMN "updated_by"`)
    await queryRunner.query(`ALTER TABLE "roles" DROP COLUMN "created_by"`)
  }
}
