
import { SupabaseClient } from '@supabase/supabase-js';
import { TestResult } from './types';
import { getSupabaseUrl } from '../config';

export const testDatabaseConnection = async (
  supabase: SupabaseClient
): Promise<TestResult> => {
  try {
    // 간단한 쿼리 실행으로 데이터베이스 연결 테스트
    const { data, error } = await supabase
      .from('_tests')
      .select('*')
      .limit(1)
      .maybeSingle();

    // 테이블이 없는 경우 정상 (테스트 테이블이 없을 수 있음)
    if (error && (error.code === '42P01' || error.code === 'PGRST116')) {
      return {
        success: true,
        error: null
      };
    }

    // 다른 오류가 있으면 실패로 처리
    if (error) {
      return {
        success: false,
        error: `데이터베이스 연결 오류: ${error.message}`
      };
    }

    // 성공
    return {
      success: true,
      error: null
    };
  } catch (error: any) {
    // HTTP URL 관련 CORS 오류 확인
    const url = getSupabaseUrl();
    const isHttpUrl = url.startsWith('http:') && !url.startsWith('http://localhost');
    
    if (error.message && error.message.includes('Failed to fetch') && isHttpUrl) {
      return {
        success: false,
        error: `데이터베이스 테스트 실패: ${error.message} (CORS 프록시 사용시 정상 작동합니다. 설정에서 프록시를 활성화해보세요)`
      };
    }
    
    return {
      success: false,
      error: `데이터베이스 테스트 중 예외 발생: ${error.message || '알 수 없는 오류'}`
    };
  }
};
