import { BaseMigration } from './base-migration.ts';
import type { TQueryFunction } from '../types.ts';

export class Migration005RegistryTokens extends BaseMigration {
  readonly version = 5;
  readonly description = 'Registry tokens table';

  up(query: TQueryFunction): void {
    query(`
      CREATE TABLE registry_tokens (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        token_hash TEXT NOT NULL UNIQUE,
        token_type TEXT NOT NULL,
        scope TEXT NOT NULL,
        expires_at REAL,
        created_at REAL NOT NULL,
        last_used_at REAL,
        created_by TEXT NOT NULL
      )
    `);

    query(
      'CREATE INDEX IF NOT EXISTS idx_registry_tokens_type ON registry_tokens(token_type)',
    );
    query(
      'CREATE INDEX IF NOT EXISTS idx_registry_tokens_hash ON registry_tokens(token_hash)',
    );
  }
}
