-- D1 数据库初始化脚本 -- 用于创建 KatelyaTV 所需的数据表 -- 用户表 CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 播放记录表 CREATE TABLE IF NOT EXISTS play_records ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, record_key TEXT NOT NULL, video_url TEXT, current_time REAL DEFAULT 0, duration REAL DEFAULT 0, episode_index INTEGER DEFAULT 0, episode_url TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, UNIQUE (user_id, record_key) ); -- 收藏表 CREATE TABLE IF NOT EXISTS favorites ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, favorite_key TEXT NOT NULL, title TEXT, cover_url TEXT, rating REAL, year TEXT, area TEXT, category TEXT, actors TEXT, director TEXT, description TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, UNIQUE (user_id, favorite_key) ); -- 搜索历史表 CREATE TABLE IF NOT EXISTS search_history ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, keyword TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); -- 跳过配置表 CREATE TABLE IF NOT EXISTS skip_configs ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, config_key TEXT NOT NULL, start_time INTEGER DEFAULT 0, end_time INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, UNIQUE (user_id, config_key) ); -- 管理员配置表 CREATE TABLE IF NOT EXISTS admin_configs ( id INTEGER PRIMARY KEY AUTOINCREMENT, config_key TEXT UNIQUE NOT NULL, config_value TEXT, description TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 插入默认管理员配置 INSERT OR IGNORE INTO admin_configs (config_key, config_value, description) VALUES ('site_name', 'KatelyaTV', '站点名称'), ('site_description', '高性能影视播放平台', '站点描述'), ('enable_register', 'true', '是否允许用户注册'), ('max_users', '100', '最大用户数量'), ('cache_ttl', '3600', '缓存时间(秒)'); -- 创建索引以提高查询性能 CREATE INDEX IF NOT EXISTS idx_play_records_user_id ON play_records(user_id); CREATE INDEX IF NOT EXISTS idx_play_records_record_key ON play_records(record_key); CREATE INDEX IF NOT EXISTS idx_favorites_user_id ON favorites(user_id); CREATE INDEX IF NOT EXISTS idx_search_history_user_id ON search_history(user_id); CREATE INDEX IF NOT EXISTS idx_skip_configs_user_id ON skip_configs(user_id); -- 创建视图以简化查询 CREATE VIEW IF NOT EXISTS user_stats AS SELECT u.id, u.username, COUNT(DISTINCT pr.id) as play_count, COUNT(DISTINCT f.id) as favorite_count, COUNT(DISTINCT sh.id) as search_count, u.created_at FROM users u LEFT JOIN play_records pr ON u.id = pr.user_id LEFT JOIN favorites f ON u.id = f.user_id LEFT JOIN search_history sh ON u.id = sh.user_id GROUP BY u.id, u.username, u.created_at;