-- Migration 016: 将 models.api_key 从存储实际 key 值改为存储 api_keys.id
SET search_path TO crawl;

-- 1. 添加新列 api_key_id
ALTER TABLE models ADD COLUMN IF NOT EXISTS api_key_id BIGINT;

-- 2. 尝试迁移现有数据（如果 api_key 值能匹配到 api_keys.key_value，则填充 api_key_id）
UPDATE models m
SET api_key_id = (SELECT id FROM api_keys WHERE key_value = m.api_key LIMIT 1)
WHERE m.api_key IS NOT NULL;

-- 3. 删除旧列 api_key
ALTER TABLE models DROP COLUMN IF EXISTS api_key;

-- 4. 添加外键约束（可选，如果需要严格约束）
-- ALTER TABLE models ADD CONSTRAINT fk_models_api_key FOREIGN KEY (api_key_id) REFERENCES api_keys(id) ON DELETE SET NULL;

COMMENT ON COLUMN models.api_key_id IS '关联的 API Key ID，NULL 表示未绑定';
