-- iAs 初始数据库迁移
-- 认证信息和聊天记录存储

-- 应用状态表（key-value 存储，用于认证信息等）
CREATE TABLE IF NOT EXISTS app_state (
    key TEXT PRIMARY KEY,
    value JSONB NOT NULL,
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- 聊天记录表
CREATE TABLE IF NOT EXISTS chat_records (
    id BIGSERIAL PRIMARY KEY,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    direction TEXT NOT NULL,          -- 'inbound' | 'outbound'
    user_id TEXT NOT NULL,            -- 微信用户 ID
    account_id TEXT NOT NULL,         -- 机器人账号 ID
    text TEXT NOT NULL,               -- 消息内容
    source TEXT NOT NULL DEFAULT '',  -- 消息来源
    context_token TEXT NOT NULL DEFAULT '',  -- 上下文令牌
    message_id TEXT NOT NULL DEFAULT '',
    meta JSONB NOT NULL DEFAULT '{}'::JSONB
);

CREATE INDEX IF NOT EXISTS idx_chat_records_user_created
    ON chat_records (user_id, created_at DESC);

CREATE INDEX IF NOT EXISTS idx_chat_records_account_created
    ON chat_records (account_id, created_at DESC);

CREATE UNIQUE INDEX IF NOT EXISTS idx_chat_records_message_id
    ON chat_records (message_id) WHERE message_id != '';
