Files
lms-be/prisma/migrations/20260812123000_consolidate_platform_environment/migration.sql
T
2026-08-12 14:46:57 +09:00

40 lines
1.3 KiB
SQL

-- SLAM/navigation is selected from the map. Keep one runtime configuration
-- for the remote platform instead of separate visualization profiles.
DELETE FROM "course_environment_profiles" legacy
USING "course_environment_profiles" platform
WHERE legacy."course_id" = platform."course_id"
AND legacy."week" = platform."week"
AND platform."platform_key" = 'PLATFORM'
AND legacy."platform_key" IN ('REAL_SLAM', 'REAL_SLAM_3D', 'REAL_NAVIGATION');
WITH canonical AS (
SELECT id
FROM (
SELECT
id,
row_number() OVER (
PARTITION BY "course_id", "week"
ORDER BY CASE "platform_key"
WHEN 'REAL_SLAM' THEN 1
WHEN 'REAL_NAVIGATION' THEN 2
WHEN 'REAL_SLAM_3D' THEN 3
END
) AS rank
FROM "course_environment_profiles"
WHERE "platform_key" IN ('REAL_SLAM', 'REAL_SLAM_3D', 'REAL_NAVIGATION')
) ranked
WHERE rank = 1
)
UPDATE "course_environment_profiles" profile
SET
"platform_key" = 'PLATFORM',
"profile_type" = 'PLATFORM',
"name" = '플랫폼',
"config" = jsonb_set(profile."config" #- '{viewer,mode}', '{type}', '"PLATFORM"'::jsonb, true),
"updated_at" = CURRENT_TIMESTAMP
FROM canonical
WHERE profile.id = canonical.id;
DELETE FROM "course_environment_profiles"
WHERE "platform_key" IN ('REAL_SLAM', 'REAL_SLAM_3D', 'REAL_NAVIGATION');