-- ============================================
-- 迁移: 004_add_refresh_tokens.sql
-- 目的: 添加 refresh_tokens 表支持双 Token 机制
-- 日期: 2026-04-18
-- 依赖: 无（users 表已在 001 创建）
-- 说明: 用于存储 refresh_token，支持 access_token 过期后自动续期
-- ============================================

-- 迁移: 添加 refresh_tokens 表
-- 用于支持 access_token 刷新机制

CREATE TABLE IF NOT EXISTS refresh_tokens (
    id SERIAL PRIMARY KEY,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    token VARCHAR(512) NOT NULL,
    expires_at TIMESTAMPTZ NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 索引：加速 token 查询和用户清理
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_token ON refresh_tokens(token);
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_user_id ON refresh_tokens(user_id);
CREATE INDEX IF NOT EXISTS idx_refresh_tokens_expires_at ON refresh_tokens(expires_at);

COMMENT ON TABLE refresh_tokens IS 'Refresh token 存储表，支持 access_token 续期';
COMMENT ON COLUMN refresh_tokens.token IS 'Refresh token 字符串';
COMMENT ON COLUMN refresh_tokens.expires_at IS '过期时间';
