40 行
1.5 KiB
SQL
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;
|