first commit

This commit is contained in:
2025-09-23 07:35:11 +00:00
commit a5dd3f1335
110 changed files with 46108 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
-- 为categories表添加sort_order字段支持排序功能
-- Migration: add_sort_order_to_categories
-- 添加sort_order字段
ALTER TABLE categories ADD COLUMN sort_order INTEGER DEFAULT 0;
-- 为现有分类设置初始排序值(按创建时间排序)
UPDATE categories
SET sort_order = (
SELECT COUNT(*)
FROM categories c2
WHERE c2.created_at <= categories.created_at
) * 10;
-- 创建索引以提高排序查询性能
CREATE INDEX IF NOT EXISTS idx_categories_sort_order ON categories(sort_order);

View File

@@ -0,0 +1,54 @@
-- 添加专题功能相关表
-- 创建时间: 2024-01-20
-- 专题表
CREATE TABLE IF NOT EXISTS topics (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(100) UNIQUE NOT NULL,
description TEXT,
cover_image VARCHAR(500),
sort_order INTEGER DEFAULT 0,
status VARCHAR(20) DEFAULT 'active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 视频专题关联表(多对多关系)
CREATE TABLE IF NOT EXISTS video_topics (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_id INTEGER NOT NULL,
topic_id INTEGER NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
FOREIGN KEY (topic_id) REFERENCES topics(id) ON DELETE CASCADE,
UNIQUE(video_id, topic_id)
);
-- 创建索引提高查询性能
CREATE INDEX IF NOT EXISTS idx_video_topics_video_id ON video_topics(video_id);
CREATE INDEX IF NOT EXISTS idx_video_topics_topic_id ON video_topics(topic_id);
CREATE INDEX IF NOT EXISTS idx_topics_status ON topics(status);
CREATE INDEX IF NOT EXISTS idx_topics_sort_order ON topics(sort_order);
-- 插入默认专题
INSERT OR IGNORE INTO topics (name, description, sort_order) VALUES
('历史纪录片', '高句丽历史相关的纪录片和教育视频', 1),
('文化艺术', '传统文化艺术表演和展示', 2),
('考古发现', '考古发现和文物研究相关视频', 3),
('语言教学', '高句丽语言学习和教学视频', 4),
('民俗传统', '传统民俗风情和节庆活动', 5),
('建筑遗迹', '古代建筑和遗迹介绍', 6),
('专家讲座', '学者专家的学术讲座和分析', 7),
('文物展示', '珍贵文物的展示和介绍', 8);
-- 为现有视频随机分配专题(示例数据)
INSERT OR IGNORE INTO video_topics (video_id, topic_id)
SELECT v.id, t.id
FROM videos v
CROSS JOIN topics t
WHERE
(v.id = 1 AND t.name IN ('历史纪录片', '专家讲座')) OR
(v.id = 2 AND t.name IN ('文化艺术', '民俗传统')) OR
(v.id = 3 AND t.name IN ('建筑遗迹', '历史纪录片')) OR
(v.id = 4 AND t.name IN ('语言教学')) OR
(v.id = 5 AND t.name IN ('考古发现', '文物展示'));