Files
sori.studio/db/migrations/019_dedupe_navigation_items.sql

24 lines
684 B
SQL

-- 반복 마이그레이션 실행으로 생긴 동일 위치·상위·라벨·URL 메뉴 중복 정리
WITH ranked_navigation AS (
SELECT
id,
row_number() OVER (
PARTITION BY location, COALESCE(parent_id::text, ''), label, url
ORDER BY
CASE WHEN is_folder THEN 0 ELSE 1 END,
sort_order ASC,
created_at ASC,
id ASC
) AS row_rank
FROM navigation_items
)
DELETE FROM navigation_items
WHERE id IN (
SELECT id
FROM ranked_navigation
WHERE row_rank > 1
);
CREATE UNIQUE INDEX IF NOT EXISTS navigation_items_location_parent_label_url_unique_idx
ON navigation_items (location, COALESCE(parent_id::text, ''), label, url);