import { type MigrationInterface, type QueryRunner } from 'typeorm';

export class AuditLogRequestContext1777100000000 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS ip_address VARCHAR(45)`,
    );
    await queryRunner.query(
      `ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS user_agent VARCHAR(500)`,
    );
    await queryRunner.query(
      `ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS request_id VARCHAR(64)`,
    );
    await queryRunner.query(
      `CREATE INDEX IF NOT EXISTS idx_audit_logs_tenant_user_created
         ON audit_logs (tenant_id, performed_by, created_at DESC)`,
    );
    await queryRunner.query(
      `CREATE INDEX IF NOT EXISTS idx_audit_logs_tenant_created
         ON audit_logs (tenant_id, created_at DESC)`,
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(`DROP INDEX IF EXISTS idx_audit_logs_tenant_created`);
    await queryRunner.query(`DROP INDEX IF EXISTS idx_audit_logs_tenant_user_created`);
    await queryRunner.query(`ALTER TABLE audit_logs DROP COLUMN IF EXISTS request_id`);
    await queryRunner.query(`ALTER TABLE audit_logs DROP COLUMN IF EXISTS user_agent`);
    await queryRunner.query(`ALTER TABLE audit_logs DROP COLUMN IF EXISTS ip_address`);
  }
}
