文件
tennis-training-hub/drizzle/0008_tutorial_academy_refresh.sql
2026-04-07 11:00:03 +08:00

40 行
1.5 KiB
SQL

ALTER TABLE `tutorial_videos`
ADD `slug` varchar(128),
ADD `topicArea` varchar(32) DEFAULT 'tennis_skill',
ADD `contentFormat` varchar(16) DEFAULT 'video',
ADD `sourcePlatform` varchar(16) DEFAULT 'none',
ADD `heroSummary` text,
ADD `externalUrl` text,
ADD `platformVideoId` varchar(64),
ADD `estimatedEffortMinutes` int,
ADD `prerequisites` json,
ADD `learningObjectives` json,
ADD `stepSections` json,
ADD `deliverables` json,
ADD `relatedDocPaths` json,
ADD `viewCount` int,
ADD `commentCount` int,
ADD `metricsFetchedAt` timestamp NULL,
ADD `completionAchievementKey` varchar(64),
ADD `isFeatured` int DEFAULT 0,
ADD `featuredOrder` int DEFAULT 0;
--> statement-breakpoint
ALTER TABLE `tutorial_progress`
ADD `completed` int DEFAULT 0,
ADD `completedAt` timestamp NULL;
--> statement-breakpoint
UPDATE `tutorial_videos`
SET
`topicArea` = COALESCE(`topicArea`, 'tennis_skill'),
`contentFormat` = COALESCE(`contentFormat`, 'video'),
`sourcePlatform` = COALESCE(`sourcePlatform`, 'none'),
`heroSummary` = COALESCE(`heroSummary`, `description`),
`estimatedEffortMinutes` = COALESCE(`estimatedEffortMinutes`, CASE WHEN `duration` IS NULL THEN NULL ELSE ROUND(`duration` / 60) END),
`isFeatured` = COALESCE(`isFeatured`, 0),
`featuredOrder` = COALESCE(`featuredOrder`, 0);
--> statement-breakpoint
UPDATE `tutorial_progress`
SET
`completed` = CASE WHEN `watched` = 1 THEN 1 ELSE COALESCE(`completed`, 0) END,
`completedAt` = CASE WHEN `watched` = 1 AND `completedAt` IS NULL THEN `updatedAt` ELSE `completedAt` END;