import { MigrationInterface, QueryRunner } from 'typeorm';

export class AddApiKeys1776000000000 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`
      CREATE TABLE IF NOT EXISTS "api_keys" (
        "id" uuid DEFAULT gen_random_uuid() NOT NULL,
        "user_id" uuid NOT NULL,
        "key" varchar NOT NULL,
        "name" varchar(100) NOT NULL,
        "key_prefix" varchar(12) NOT NULL,
        "is_active" boolean NOT NULL DEFAULT true,
        "last_used_at" timestamp DEFAULT NULL,
        "created_at" timestamp NOT NULL DEFAULT now(),
        CONSTRAINT "PK_api_keys" PRIMARY KEY ("id"),
        CONSTRAINT "UQ_api_keys_key" UNIQUE ("key"),
        CONSTRAINT "FK_api_keys_user" FOREIGN KEY ("user_id")
          REFERENCES "users"("id") ON DELETE CASCADE
      )
    `);
    await queryRunner.query(`
      CREATE INDEX "IDX_api_keys_user_id" ON "api_keys" ("user_id")
    `);
    await queryRunner.query(`
      CREATE INDEX "IDX_api_keys_key" ON "api_keys" ("key")
    `);
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`DROP TABLE IF EXISTS "api_keys"`);
  }
}
