-- 새로운 워크플로우에 맞게 DB 구조 최적화

-- 1. due_date를 start_date로 변경
ALTER TABLE todos RENAME COLUMN due_date TO start_date;

-- 2. tags 컬럼 제거 (사용하지 않음)
ALTER TABLE todos DROP COLUMN IF EXISTS tags;

-- 3. category 기본값 변경 및 기존 데이터 정리
-- 기존 'checklist' 카테고리를 'memo'로 변경
UPDATE todos SET category = 'memo' WHERE category = 'checklist';

-- 기존 'calendar' 카테고리를 'todo'로 변경  
UPDATE todos SET category = 'todo' WHERE category = 'calendar';

-- 4. title을 nullable로 변경 (메모의 경우 선택사항)
ALTER TABLE todos ALTER COLUMN title DROP NOT NULL;

-- 5. description을 NOT NULL로 변경 (내용은 필수)
UPDATE todos SET description = COALESCE(title, '내용 없음') WHERE description IS NULL OR description = '';
ALTER TABLE todos ALTER COLUMN description SET NOT NULL;

-- 6. category 기본값을 'memo'로 설정
ALTER TABLE todos ALTER COLUMN category SET DEFAULT 'memo';

-- 7. 불필요한 인덱스 정리 및 새로운 인덱스 추가
-- 기존 due_date 인덱스 제거 (컬럼명이 변경됨)
DROP INDEX IF EXISTS idx_todos_due_date;

-- 새로운 인덱스 생성
CREATE INDEX IF NOT EXISTS idx_todos_start_date ON todos(start_date);
CREATE INDEX IF NOT EXISTS idx_todos_category_status ON todos(category, status);
CREATE INDEX IF NOT EXISTS idx_todos_user_category ON todos(user_id, category);

-- 8. 성능 최적화를 위한 복합 인덱스
CREATE INDEX IF NOT EXISTS idx_todos_workflow ON todos(user_id, category, status, start_date);

COMMIT;
