-- V7__add_admin_api_keys.sql
-- 管理员级 API Key（永久凭证）：用于调用一组独立的 /admin-api/* 接口。
-- 仅超级管理员可创建/管理；不允许物理删除，仅支持 禁用/启用/吊销。

CREATE TABLE IF NOT EXISTS admin_api_keys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL COMMENT 'Key 名称/用途备注',
    description TEXT NULL COMMENT '描述',

    key_prefix VARCHAR(16) NOT NULL COMMENT 'Key 前缀（明文前 12 字符），用于列表与审计识别',
    key_hash VARCHAR(128) NOT NULL COMMENT 'Key 的 bcrypt 哈希；明文不入库',

    scopes VARCHAR(255) NOT NULL DEFAULT 'user:read,user:write,org:read,org:write' COMMENT '逗号分隔的权限范围',

    is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用：0=禁用（可恢复），1=启用',
    is_revoked TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否吊销：1=永久作废，不可恢复',

    created_by INT NOT NULL COMMENT '创建者 user_id',
    last_used_at DATETIME NULL COMMENT '最近一次使用时间',
    last_used_ip VARCHAR(64) NULL COMMENT '最近一次使用 IP',
    use_count INT NOT NULL DEFAULT 0 COMMENT '累计使用次数',

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    UNIQUE KEY uq_admin_api_keys_key_hash (key_hash),
    INDEX idx_admin_api_keys_key_prefix (key_prefix),
    INDEX idx_admin_api_keys_created_by (created_by),
    CONSTRAINT fk_admin_api_keys_created_by FOREIGN KEY (created_by) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员级 API Key（永久凭证）';
