37 lines
1.2 KiB
MySQL
37 lines
1.2 KiB
MySQL
|
|
-- Migration: Remove group_name field from wishlist_items and tasks tables
|
||
|
|
-- Date: 2026-02-XX
|
||
|
|
--
|
||
|
|
-- This migration reverses the changes made in 000014_add_group_name.up.sql
|
||
|
|
|
||
|
|
-- Step 1: Drop materialized view
|
||
|
|
DROP MATERIALIZED VIEW IF EXISTS user_group_suggestions_mv;
|
||
|
|
|
||
|
|
-- Step 2: Drop indexes on group_name
|
||
|
|
DROP INDEX IF EXISTS idx_tasks_group_name;
|
||
|
|
DROP INDEX IF EXISTS idx_wishlist_items_group_name;
|
||
|
|
|
||
|
|
-- Step 3: Remove group_name from tasks
|
||
|
|
ALTER TABLE tasks
|
||
|
|
DROP COLUMN group_name;
|
||
|
|
|
||
|
|
-- Step 4: Add back project_id to wishlist_items
|
||
|
|
ALTER TABLE wishlist_items
|
||
|
|
ADD COLUMN project_id INTEGER REFERENCES projects(id) ON DELETE SET NULL;
|
||
|
|
|
||
|
|
-- Step 5: Try to restore project_id from group_name (if possible)
|
||
|
|
-- Note: This is best-effort, as group_name might not match project names exactly
|
||
|
|
UPDATE wishlist_items wi
|
||
|
|
SET project_id = p.id
|
||
|
|
FROM projects p
|
||
|
|
WHERE wi.group_name = p.name
|
||
|
|
AND wi.group_name IS NOT NULL
|
||
|
|
AND wi.group_name != ''
|
||
|
|
AND p.deleted = FALSE;
|
||
|
|
|
||
|
|
-- Step 6: Create index on project_id
|
||
|
|
CREATE INDEX idx_wishlist_items_project_id ON wishlist_items(project_id);
|
||
|
|
|
||
|
|
-- Step 7: Remove group_name from wishlist_items
|
||
|
|
ALTER TABLE wishlist_items
|
||
|
|
DROP COLUMN group_name;
|