
import { getSupabaseUrl } from '@/lib/supabase/config';

/**
 * 강화된 서버 연결 검사 - Supabase Cloud 환경에 최적화
 */
export const verifySupabaseConnection = async (): Promise<{
  connected: boolean;
  message: string;
  statusCode?: number;
  details?: string;
}> => {
  const supabaseUrl = getSupabaseUrl();
  if (!supabaseUrl) {
    return {
      connected: false,
      message: 'Supabase URL이 설정되지 않았습니다'
    };
  }
  
  // 무작위 쿼리 파라미터를 추가하여 캐시 방지
  const cacheParam = `?_nocache=${Date.now()}`;
  
  // 다양한 경로를 순차적으로 시도
  const paths = [
    '/auth/v1/',
    '/',
    '/rest/v1/',
    '/storage/v1/'
  ];
  
  for (const path of paths) {
    try {
      console.log(`경로 시도: ${path}`);
      const response = await fetch(`${supabaseUrl}${path}${cacheParam}`, {
        method: 'GET',
        headers: {
          'Content-Type': 'application/json'
        },
        signal: AbortSignal.timeout(8000)
      });
      
      console.log(`경로 ${path} 응답 상태:`, response.status);
      
      // 어떤 응답이든 서버가 살아있다는 신호로 간주
      return {
        connected: true,
        message: `서버 연결 성공 (${path})`,
        statusCode: response.status,
        details: `${response.status} ${response.statusText}`
      };
    } catch (error) {
      console.warn(`${path} 경로 연결 실패:`, error);
      // 계속 다음 경로 시도
    }
  }
  
  // 모든 경로 시도 실패
  return {
    connected: false,
    message: '모든 Supabase 경로에 대한 연결 시도 실패',
    details: '네트워크 연결 또는 서버 주소를 확인하세요'
  };
};
