import { MigrationInterface, QueryRunner } from "typeorm"

export class CreatePasswordSetupTokensTable1762501360297 implements MigrationInterface {
  name = "CreatePasswordSetupTokensTable1762501360297"

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `CREATE TABLE "password_setup_tokens" ("id" SERIAL NOT NULL, "user_id" integer NOT NULL, "token" character varying(500) NOT NULL, "expires_at" TIMESTAMP NOT NULL, "is_used" boolean NOT NULL DEFAULT false, "created_at" TIMESTAMP NOT NULL DEFAULT NOW(), CONSTRAINT "PK_0e1c70fc5212d9139d13e4f5711" PRIMARY KEY ("id"))`,
    )
    await queryRunner.query(`ALTER TABLE "users" ADD "employee_id" integer`)
    await queryRunner.query(
      `ALTER TABLE "users" ADD CONSTRAINT "FK_9760615d88ed518196bb79ea03d" FOREIGN KEY ("employee_id") REFERENCES "employees"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
    await queryRunner.query(
      `ALTER TABLE "password_setup_tokens" ADD CONSTRAINT "FK_c7be7986f99325e1ccfc957853b" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
    )
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "password_setup_tokens" DROP CONSTRAINT "FK_c7be7986f99325e1ccfc957853b"`,
    )
    await queryRunner.query(
      `ALTER TABLE "users" DROP CONSTRAINT "FK_9760615d88ed518196bb79ea03d"`,
    )
    await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "employee_id"`)
    await queryRunner.query(`DROP TABLE "password_setup_tokens"`)
  }
}
