-- 020_add_management_completion_fields.sql
-- 관리함 완료 신청 정보 필드 추가
-- 작성일: 2025-10-26
-- 목적: 완료 사진 및 코멘트 수정 기능 지원

BEGIN;

-- 마이그레이션 로그 확인
DO $$
BEGIN
    -- 이미 실행된 마이그레이션인지 확인
    IF EXISTS (
        SELECT 1 FROM migration_log 
        WHERE migration_file = '020_add_management_completion_fields.sql'
        AND status = 'completed'
    ) THEN
        RAISE NOTICE '마이그레이션이 이미 실행되었습니다: 020_add_management_completion_fields.sql';
        RETURN;
    END IF;

    -- 마이그레이션 시작 로그
    INSERT INTO migration_log (migration_file, status, started_at, notes)
    VALUES ('020_add_management_completion_fields.sql', 'running', NOW(), 
            '관리함 완료 신청 정보 필드 추가 - completion_photo, completion_comment 수정 기능');

    -- completion_photo_path 컬럼이 없으면 추가 (이미 있을 수 있음)
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'issues' AND column_name = 'completion_photo_path'
    ) THEN
        ALTER TABLE issues ADD COLUMN completion_photo_path VARCHAR(500);
        RAISE NOTICE '✅ completion_photo_path 컬럼 추가됨';
    ELSE
        RAISE NOTICE 'ℹ️ completion_photo_path 컬럼이 이미 존재함';
    END IF;

    -- completion_comment 컬럼이 없으면 추가 (이미 있을 수 있음)
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'issues' AND column_name = 'completion_comment'
    ) THEN
        ALTER TABLE issues ADD COLUMN completion_comment TEXT;
        RAISE NOTICE '✅ completion_comment 컬럼 추가됨';
    ELSE
        RAISE NOTICE 'ℹ️ completion_comment 컬럼이 이미 존재함';
    END IF;

    -- completion_requested_at 컬럼이 없으면 추가 (이미 있을 수 있음)
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'issues' AND column_name = 'completion_requested_at'
    ) THEN
        ALTER TABLE issues ADD COLUMN completion_requested_at TIMESTAMP WITH TIME ZONE;
        RAISE NOTICE '✅ completion_requested_at 컬럼 추가됨';
    ELSE
        RAISE NOTICE 'ℹ️ completion_requested_at 컬럼이 이미 존재함';
    END IF;

    -- completion_requested_by_id 컬럼이 없으면 추가 (이미 있을 수 있음)
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'issues' AND column_name = 'completion_requested_by_id'
    ) THEN
        ALTER TABLE issues ADD COLUMN completion_requested_by_id INTEGER REFERENCES users(id);
        RAISE NOTICE '✅ completion_requested_by_id 컬럼 추가됨';
    ELSE
        RAISE NOTICE 'ℹ️ completion_requested_by_id 컬럼이 이미 존재함';
    END IF;

    -- 마이그레이션 완료 로그
    UPDATE migration_log 
    SET status = 'completed', completed_at = NOW(),
        notes = notes || ' - 완료: 모든 필요한 컬럼이 추가되었습니다.'
    WHERE migration_file = '020_add_management_completion_fields.sql' 
    AND status = 'running';

    RAISE NOTICE '🎉 마이그레이션 완료: 020_add_management_completion_fields.sql';

EXCEPTION
    WHEN OTHERS THEN
        -- 에러 발생 시 로그 업데이트
        UPDATE migration_log 
        SET status = 'failed', completed_at = NOW(),
            notes = notes || ' - 실패: ' || SQLERRM
        WHERE migration_file = '020_add_management_completion_fields.sql' 
        AND status = 'running';
        
        RAISE EXCEPTION '❌ 마이그레이션 실패: %', SQLERRM;
END $$;

COMMIT;
