001project_wildgrowth/backend/prisma/insert-single-courses-serve...

153 lines
5.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 在服务器上插入小节课测试数据
-- 执行方式psql -U your_username -d your_database -f insert-single-courses-server.sql
-- 或者在服务器上psql $DATABASE_URL -f insert-single-courses-server.sql
-- ============================================================
-- 小节课 15分钟时间管理
-- ============================================================
-- 插入小节课 1
INSERT INTO courses (id, title, type, total_nodes, created_at)
VALUES ('course_single_001', '5分钟时间管理', 'single', 1, NOW())
ON CONFLICT (id) DO UPDATE SET
title = EXCLUDED.title,
type = 'single',
total_nodes = EXCLUDED.total_nodes;
-- 插入对应的节点
INSERT INTO course_nodes (id, course_id, title, order_index, created_at)
VALUES ('node_single_001', 'course_single_001', '时间管理的核心原则', 0, NOW())
ON CONFLICT (id) DO UPDATE SET
course_id = EXCLUDED.course_id,
title = EXCLUDED.title,
order_index = EXCLUDED.order_index;
-- 为节点创建基础幻灯片4张幻灯片
INSERT INTO node_slides (id, node_id, slide_type, order_index, content, effect, created_at)
VALUES
(
'slide_single_001_01',
'node_single_001',
'text',
1,
'{"title": "5分钟时间管理", "paragraphs": ["欢迎学习时间管理核心原则", "让我们快速掌握高效的时间管理方法"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_001_02',
'node_single_001',
'text',
2,
'{"title": "核心原则", "paragraphs": ["1. 优先级排序:重要且紧急的事情优先", "2. 番茄工作法25分钟专注5分钟休息", "3. 时间块:为每个任务分配固定时间"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_001_03',
'node_single_001',
'text',
3,
'{"title": "实践要点", "paragraphs": ["每天早上列出今日最重要的3件事", "使用番茄钟保持专注", "每天晚上回顾完成情况"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_001_04',
'node_single_001',
'text',
4,
'{"title": "本节小结", "paragraphs": ["你已经完成了「时间管理的核心原则」的学习", "记住:高效的时间管理需要持续练习", "每天进步一点点,最终会带来巨大的改变"]}'::jsonb,
'fade_in',
NOW()
)
ON CONFLICT (id) DO UPDATE SET
slide_type = EXCLUDED.slide_type,
order_index = EXCLUDED.order_index,
content = EXCLUDED.content,
effect = EXCLUDED.effect;
-- ============================================================
-- 小节课 23分钟学会专注
-- ============================================================
-- 插入小节课 2
INSERT INTO courses (id, title, type, total_nodes, created_at)
VALUES ('course_single_002', '3分钟学会专注', 'single', 1, NOW())
ON CONFLICT (id) DO UPDATE SET
title = EXCLUDED.title,
type = 'single',
total_nodes = EXCLUDED.total_nodes;
-- 插入对应的节点
INSERT INTO course_nodes (id, course_id, title, order_index, created_at)
VALUES ('node_single_002', 'course_single_002', '专注力的训练方法', 0, NOW())
ON CONFLICT (id) DO UPDATE SET
course_id = EXCLUDED.course_id,
title = EXCLUDED.title,
order_index = EXCLUDED.order_index;
-- 为节点创建基础幻灯片4张幻灯片
INSERT INTO node_slides (id, node_id, slide_type, order_index, content, effect, created_at)
VALUES
(
'slide_single_002_01',
'node_single_002',
'text',
1,
'{"title": "3分钟学会专注", "paragraphs": ["欢迎学习专注力的训练方法", "让我们快速掌握提升专注力的技巧"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_002_02',
'node_single_002',
'text',
2,
'{"title": "专注的原理", "paragraphs": ["专注力是一种可以训练的能力", "大脑需要时间进入专注状态约15分钟", "减少干扰是提升专注的关键"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_002_03',
'node_single_002',
'text',
3,
'{"title": "实用技巧", "paragraphs": ["关闭所有通知和干扰源", "设置专门的专注时间和空间", "使用深呼吸帮助快速进入专注状态"]}'::jsonb,
'fade_in',
NOW()
),
(
'slide_single_002_04',
'node_single_002',
'text',
4,
'{"title": "本节小结", "paragraphs": ["你已经完成了「专注力的训练方法」的学习", "记住:专注力需要持续练习", "从每天15分钟开始逐步提升专注时长"]}'::jsonb,
'fade_in',
NOW()
)
ON CONFLICT (id) DO UPDATE SET
slide_type = EXCLUDED.slide_type,
order_index = EXCLUDED.order_index,
content = EXCLUDED.content,
effect = EXCLUDED.effect;
-- ============================================================
-- 验证数据
-- ============================================================
SELECT
c.id as course_id,
c.title as course_title,
c.type,
c.total_nodes,
n.id as node_id,
n.title as node_title,
n.order_index,
(SELECT COUNT(*) FROM node_slides WHERE node_id = n.id) as slide_count
FROM courses c
LEFT JOIN course_nodes n ON c.id = n.course_id
WHERE c.id IN ('course_single_001', 'course_single_002')
ORDER BY c.id, n.order_index;