
import { supabase } from '@/lib/supabase';
import { isSyncEnabled } from '@/utils/syncUtils';

/**
 * 카테고리 예산을 Supabase에서 가져오기
 */
export const loadCategoryBudgetsFromSupabase = async (userId: string): Promise<Record<string, number> | null> => {
  if (!userId || !isSyncEnabled()) return null;

  try {
    const { data, error } = await supabase
      .from('category_budgets')
      .select('*')
      .eq('user_id', userId);

    if (error) {
      console.error('카테고리 예산 조회 오류:', error);
      return null;
    }

    if (data && data.length > 0) {
      // 데이터를 카테고리->금액 형식의 객체로 변환
      const categoryBudgets: Record<string, number> = {};
      data.forEach(item => {
        categoryBudgets[item.category] = item.amount;
      });
      return categoryBudgets;
    }
    
    return null;
  } catch (error) {
    console.error('카테고리 예산 로드 오류:', error);
    return null;
  }
};

/**
 * 카테고리 예산을 Supabase에 저장
 */
export const saveCategoryBudgetsToSupabase = async (
  userId: string, 
  categoryBudgets: Record<string, number>
): Promise<boolean> => {
  if (!userId || !isSyncEnabled()) return false;
  
  try {
    // 기존 데이터 삭제 (다시 추가하기 위해)
    const { error: deleteError } = await supabase
      .from('category_budgets')
      .delete()
      .eq('user_id', userId);
      
    if (deleteError) {
      console.error('카테고리 예산 삭제 오류:', deleteError);
      return false;
    }
    
    // 새 데이터 추가
    const budgetEntries = Object.entries(categoryBudgets).map(([category, amount]) => ({
      user_id: userId,
      category,
      amount
    }));
    
    if (budgetEntries.length === 0) return true;
    
    const { error } = await supabase
      .from('category_budgets')
      .insert(budgetEntries);
      
    if (error) {
      console.error('카테고리 예산 추가 오류:', error);
      return false;
    }
    
    return true;
  } catch (error) {
    console.error('카테고리 예산 저장 오류:', error);
    return false;
  }
};
