Reverted to edit edt-ac485f97-7774-4a29-9d0a-ec4295ecbab8: "Configure Supabase environment variables

Sets Supabase URL and anon key using environment variables."
This commit is contained in:
gpt-engineer-app[bot]
2025-03-15 06:42:32 +00:00
parent 36160b545a
commit 6cda809697
9 changed files with 86 additions and 533 deletions

View File

@@ -1,141 +0,0 @@
import { supabase } from '@/lib/supabase';
import { toast } from '@/components/ui/use-toast';
/**
* Supabase 환경 설정 확인
* 환경 변수가 올바르게 설정되었는지 확인합니다.
*/
export const checkSupabaseEnvironment = (): { valid: boolean; message: string } => {
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseAnonKey) {
return {
valid: false,
message: '환경 변수가 설정되지 않았습니다.'
};
}
if (supabaseUrl.includes('your_supabase_url_here') ||
supabaseAnonKey.includes('your_supabase_anon_key_here')) {
return {
valid: false,
message: '환경 변수가 아직 실제 값으로 설정되지 않았습니다. .env 파일을 업데이트해주세요.'
};
}
return {
valid: true,
message: '환경 변수가 올바르게 설정되었습니다.'
};
};
/**
* Supabase 연결 테스트
* 현재 Supabase 연결 상태를 확인합니다.
*/
export const testSupabaseConnection = async (): Promise<{ success: boolean; message: string }> => {
// 먼저 환경 설정 확인
const envCheck = checkSupabaseEnvironment();
if (!envCheck.valid) {
return {
success: false,
message: `환경 설정 오류: ${envCheck.message}`
};
}
try {
// 서버에 핑 보내기
const { data, error } = await supabase.from('_ping').select('*').limit(1);
if (error) {
console.error('Supabase 연결 테스트 실패:', error);
return {
success: false,
message: `연결 오류: ${error.message}`
};
}
// 사용자 세션 확인
const { data: userData, error: userError } = await supabase.auth.getUser();
const isLoggedIn = userData?.user !== null;
return {
success: true,
message: `Supabase 연결 성공! 로그인 상태: ${isLoggedIn ? '로그인됨' : '로그인 필요'}`
};
} catch (err) {
const error = err as Error;
console.error('Supabase 테스트 중 예외 발생:', error);
return {
success: false,
message: `예외 발생: ${error.message}`
};
}
};
/**
* 사용자 인터페이스에서 Supabase 연결 테스트를 실행
* 결과를 토스트 메시지로 표시합니다.
*/
export const runSupabaseConnectionTest = async () => {
toast({
title: "Supabase 연결 테스트",
description: "연결 상태를 확인 중입니다...",
});
const result = await testSupabaseConnection();
if (result.success) {
toast({
title: "연결 성공",
description: result.message,
});
} else {
toast({
title: "연결 실패",
description: result.message,
variant: "destructive"
});
}
};
/**
* Supabase 테이블 구조 확인
* 지정된 테이블이 존재하는지 확인합니다.
*/
export const checkSupabaseTables = async (): Promise<{ exists: boolean; tables: string[] }> => {
// 먼저 환경 설정 확인
const envCheck = checkSupabaseEnvironment();
if (!envCheck.valid) {
return { exists: false, tables: [] };
}
try {
// 현재 스키마의 테이블 목록 가져오기
const { data, error } = await supabase
.from('pg_tables')
.select('tablename')
.eq('schemaname', 'public');
if (error) {
console.error('테이블 확인 오류:', error);
return { exists: false, tables: [] };
}
const tables = data?.map(table => table.tablename) || [];
// 필요한 테이블이 있는지 확인
const requiredTables = ['transactions', 'budgets', 'category_budgets'];
const missingTables = requiredTables.filter(table => !tables.includes(table));
return {
exists: missingTables.length === 0,
tables
};
} catch (error) {
console.error('테이블 확인 중 오류 발생:', error);
return { exists: false, tables: [] };
}
};