Feat:支持标签管理;支持深色模式跟随系统

This commit is contained in:
MarSeventh
2025-11-18 12:26:54 +08:00
parent ce4e47d721
commit 8f89140b7e
130 changed files with 108 additions and 181 deletions

View File

@@ -32,6 +32,7 @@ CREATE TABLE IF NOT EXISTS files (
tg_chat_id TEXT,
tg_bot_token TEXT,
is_chunked BOOLEAN DEFAULT FALSE,
tags TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
@@ -85,6 +86,7 @@ CREATE INDEX IF NOT EXISTS idx_files_channel ON files(channel);
CREATE INDEX IF NOT EXISTS idx_files_file_type ON files(file_type);
CREATE INDEX IF NOT EXISTS idx_files_upload_ip ON files(upload_ip);
CREATE INDEX IF NOT EXISTS idx_files_created_at ON files(created_at DESC);
CREATE INDEX IF NOT EXISTS idx_files_tags ON files(tags);
CREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category);

View File

@@ -0,0 +1,12 @@
-- 添加 tags 字段到 files 表
-- 如果字段已存在,此操作会失败,可以忽略
-- 检查并添加 tags 字段
ALTER TABLE files ADD COLUMN tags TEXT;
-- 为 tags 字段创建索引(如果不存在)
CREATE INDEX IF NOT EXISTS idx_files_tags ON files(tags);
-- 说明:
-- tags 字段用于存储文件标签,格式为 JSON 数组
-- 例如:["风景", "旅行", "2024"]

View File

@@ -1,118 +0,0 @@
-- CloudFlare ImgBed D1 Database Schema
-- 用于替代原有的KV存储
-- 1. 文件表 - 存储文件元数据
CREATE TABLE IF NOT EXISTS files (
id TEXT PRIMARY KEY, -- 文件ID (原KV的key)
value TEXT, -- 文件值 (对于分块文件,存储实际内容)
metadata TEXT NOT NULL, -- 文件元数据 (JSON格式)
file_name TEXT, -- 文件名 (从metadata中提取便于查询)
file_type TEXT, -- 文件类型 (从metadata中提取)
file_size TEXT, -- 文件大小 (从metadata中提取)
upload_ip TEXT, -- 上传IP (从metadata中提取)
upload_address TEXT, -- 上传地址 (从metadata中提取)
list_type TEXT, -- 列表类型 (从metadata中提取)
timestamp INTEGER, -- 时间戳 (从metadata中提取便于排序)
label TEXT, -- 标签 (从metadata中提取)
directory TEXT, -- 目录 (从metadata中提取便于查询)
channel TEXT, -- 渠道 (从metadata中提取)
channel_name TEXT, -- 渠道名称 (从metadata中提取)
tg_file_id TEXT, -- Telegram文件ID (从metadata中提取)
tg_chat_id TEXT, -- Telegram聊天ID (从metadata中提取)
tg_bot_token TEXT, -- Telegram Bot Token (从metadata中提取)
is_chunked BOOLEAN DEFAULT FALSE, -- 是否为分块文件
tags TEXT, -- 标签 (从metadata中提取JSON数组格式)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 为文件表创建索引
CREATE INDEX IF NOT EXISTS idx_files_timestamp ON files(timestamp DESC);
CREATE INDEX IF NOT EXISTS idx_files_directory ON files(directory);
CREATE INDEX IF NOT EXISTS idx_files_channel ON files(channel);
CREATE INDEX IF NOT EXISTS idx_files_file_type ON files(file_type);
CREATE INDEX IF NOT EXISTS idx_files_upload_ip ON files(upload_ip);
CREATE INDEX IF NOT EXISTS idx_files_created_at ON files(created_at DESC);
CREATE INDEX IF NOT EXISTS idx_files_tags ON files(tags);
-- 2. 系统配置表 - 存储各种系统配置
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY, -- 配置键 (原KV的key)
value TEXT NOT NULL, -- 配置值 (JSON格式)
category TEXT, -- 配置分类 (page, security, upload, others等)
description TEXT, -- 配置描述
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 为设置表创建索引
CREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category);
-- 3. 索引操作表 - 存储原子操作记录
CREATE TABLE IF NOT EXISTS index_operations (
id TEXT PRIMARY KEY, -- 操作ID
type TEXT NOT NULL, -- 操作类型 (add, remove, move, batch_add等)
timestamp INTEGER NOT NULL, -- 时间戳
data TEXT NOT NULL, -- 操作数据 (JSON格式)
processed BOOLEAN DEFAULT FALSE, -- 是否已处理
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 为索引操作表创建索引
CREATE INDEX IF NOT EXISTS idx_index_operations_timestamp ON index_operations(timestamp);
CREATE INDEX IF NOT EXISTS idx_index_operations_processed ON index_operations(processed);
CREATE INDEX IF NOT EXISTS idx_index_operations_type ON index_operations(type);
-- 4. 索引元数据表 - 存储索引的元信息
CREATE TABLE IF NOT EXISTS index_metadata (
key TEXT PRIMARY KEY, -- 元数据键 (如 'main_index')
last_updated INTEGER, -- 最后更新时间
total_count INTEGER DEFAULT 0, -- 总文件数
last_operation_id TEXT, -- 最后处理的操作ID
chunk_count INTEGER DEFAULT 0, -- 分块数量 (保留字段D1中可能不需要)
chunk_size INTEGER DEFAULT 0, -- 分块大小 (保留字段)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 5. 其他数据表 - 存储黑名单IP等其他数据
CREATE TABLE IF NOT EXISTS other_data (
key TEXT PRIMARY KEY, -- 数据键
value TEXT NOT NULL, -- 数据值
type TEXT, -- 数据类型 (blacklist_ip, whitelist等)
description TEXT, -- 描述
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 为其他数据表创建索引
CREATE INDEX IF NOT EXISTS idx_other_data_type ON other_data(type);
-- 6. 创建触发器来自动更新 updated_at 字段
-- 文件表触发器
CREATE TRIGGER IF NOT EXISTS update_files_updated_at
AFTER UPDATE ON files
BEGIN
UPDATE files SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
END;
-- 设置表触发器
CREATE TRIGGER IF NOT EXISTS update_settings_updated_at
AFTER UPDATE ON settings
BEGIN
UPDATE settings SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key;
END;
-- 索引元数据表触发器
CREATE TRIGGER IF NOT EXISTS update_index_metadata_updated_at
AFTER UPDATE ON index_metadata
BEGIN
UPDATE index_metadata SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key;
END;
-- 其他数据表触发器
CREATE TRIGGER IF NOT EXISTS update_other_data_updated_at
AFTER UPDATE ON other_data
BEGIN
UPDATE other_data SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key;
END;