zai / app /models /token_db.py
sanbo110's picture
update sth at 2025-10-16 14:55:36
47258ea
"""
Token 数据库模型定义
使用 SQLite 存储各提供商的 Token
"""
import os
SQL_CREATE_TABLES = """
-- Token 配置表
CREATE TABLE IF NOT EXISTS tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
provider TEXT NOT NULL, -- 提供商: zai, k2think, longcat
token TEXT NOT NULL UNIQUE, -- Token 值(唯一)
token_type TEXT DEFAULT 'user', -- Token 类型: user, guest, unknown
is_enabled BOOLEAN DEFAULT 1, -- 是否启用
priority INTEGER DEFAULT 0, -- 优先级(用于排序)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(provider, token) -- 同一提供商内 Token 唯一
);
-- Token 使用统计表
CREATE TABLE IF NOT EXISTS token_stats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
token_id INTEGER NOT NULL,
total_requests INTEGER DEFAULT 0,
successful_requests INTEGER DEFAULT 0,
failed_requests INTEGER DEFAULT 0,
last_success_time DATETIME,
last_failure_time DATETIME,
FOREIGN KEY (token_id) REFERENCES tokens(id) ON DELETE CASCADE
);
-- 创建索引
CREATE INDEX IF NOT EXISTS idx_tokens_provider ON tokens(provider);
CREATE INDEX IF NOT EXISTS idx_tokens_enabled ON tokens(is_enabled);
CREATE INDEX IF NOT EXISTS idx_token_stats_token_id ON token_stats(token_id);
-- 触发器:自动更新 updated_at
CREATE TRIGGER IF NOT EXISTS update_tokens_timestamp
AFTER UPDATE ON tokens
BEGIN
UPDATE tokens SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
END;
"""
# 数据库文件路径 - 支持环境变量配置
DB_PATH = os.getenv("DB_PATH", "tokens.db")