82485d1939
- Implemented `docker-compose.kvrocks.auth.yml` for Kvrocks with password authentication. - Created `docker-compose.redis.yml` for Redis deployment. - Added Kvrocks configuration file `kvrocks.auth.conf` with necessary settings. - Updated documentation with deployment guidelines for Kvrocks. - Introduced ESLint configuration for code quality. - Developed deployment configuration check script `check-deployment-configs.js`. - Added D1 database initialization script `d1-init.sql` for KatelyaTV. - Created test script `test-kvrocks-deployment.js` to validate Kvrocks deployment. - Implemented fix verification script `verify-kvrocks-fix.js` for password handling. - Updated `wrangler.toml` for Cloudflare deployment configuration.
110 lines
3.4 KiB
SQL
110 lines
3.4 KiB
SQL
-- 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;
|