-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest-supabase.js
More file actions
90 lines (73 loc) · 3.38 KB
/
test-supabase.js
File metadata and controls
90 lines (73 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = process.env.SUPABASE_URL || process.env.VITE_SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_ANON_KEY || process.env.VITE_SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseKey) {
throw new Error('Define SUPABASE_URL y SUPABASE_ANON_KEY en las variables de entorno antes de ejecutar este script.');
}
const supabase = createClient(supabaseUrl, supabaseKey);
async function testSupabaseConnection() {
try {
console.log('🔄 Testing Supabase connection...');
// Test 1: Verificar conexión básica intentando contar registros
const { count, error: connectionError } = await supabase
.from('volunteers')
.select('*', { count: 'exact', head: true });
if (connectionError) {
console.error('❌ Error de conexión:', connectionError.message);
if (connectionError.message.includes('relation "public.volunteers" does not exist')) {
console.log('💡 Causa: La tabla "volunteers" no existe. Ejecuta el script SQL en Supabase.');
} else if (connectionError.message.includes('JWT') || connectionError.message.includes('auth')) {
console.log('💡 Causa: Problema de autenticación. Verifica las API keys.');
} else if (connectionError.message.includes('fetch')) {
console.log('💡 Causa: Problema de red o URL incorrecta. Verifica la URL del proyecto.');
} else {
console.log('💡 Causa: Error desconocido. Revisa la configuración.');
}
return false;
}
console.log('✅ Conexión exitosa con Supabase');
console.log(`📊 Registros existentes: ${count || 0}`);
// Test 2: Intentar insertar un registro de prueba
const testData = {
name: 'Usuario de Prueba',
email: 'test@example.com',
city: 'Panamá',
experience: 'intermedio',
interests: ['eventos', 'contenido'],
availability: 'flexible'
};
console.log('🔄 Intentando insertar registro de prueba...');
const { data: insertData, error: insertError } = await supabase
.from('volunteers')
.insert([testData])
.select();
if (insertError) {
console.error('❌ Error al insertar:', insertError.message);
console.log('💡 Posible causa: Políticas RLS no permiten inserciones públicas.');
return false;
}
console.log('✅ Inserción exitosa:', insertData);
// Limpiar el registro de prueba
if (insertData && insertData[0]) {
await supabase
.from('volunteers')
.delete()
.eq('id', insertData[0].id);
console.log('🧹 Registro de prueba eliminado');
}
return true;
} catch (error) {
console.error('❌ Error inesperado:', error);
return false;
}
}
// Ejecutar la prueba
testSupabaseConnection().then(success => {
if (success) {
console.log('🎉 ¡Supabase está configurado correctamente!');
console.log('📝 El formulario debería funcionar ahora.');
} else {
console.log('⚠️ Hay problemas con la configuración de Supabase');
console.log('📋 Revisa las instrucciones en SUPABASE_README.md');
}
});