// Script de teste para verificar upload no bucket catalogo require('dotenv').config(); const { createClient } = require('@supabase/supabase-js'); const supabaseUrl = process.env.SUPABASE_URL; const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY; if (!supabaseUrl || !supabaseKey) { console.error('❌ Variáveis de ambiente não configuradas'); console.log('SUPABASE_URL:', supabaseUrl ? '✓' : '✗'); console.log('SUPABASE_KEY:', supabaseKey ? '✓' : '✗'); process.exit(1); } const supabase = createClient(supabaseUrl, supabaseKey); async function testCatalogoBucket() { console.log('🔍 Testando bucket "catalogo"...\n'); try { // 1. Verificar se o bucket existe console.log('1️⃣ Verificando se bucket existe...'); const { data: buckets, error: bucketsError } = await supabase .storage .listBuckets(); if (bucketsError) { console.error('❌ Erro ao listar buckets:', bucketsError.message); return; } const catalogoBucket = buckets.find(b => b.id === 'catalogo'); if (catalogoBucket) { console.log('✅ Bucket "catalogo" existe!'); console.log(' - ID:', catalogoBucket.id); console.log(' - Nome:', catalogoBucket.name); console.log(' - Público:', catalogoBucket.public); console.log(''); } else { console.log('❌ Bucket "catalogo" NÃO existe!'); console.log('\n📋 Execute o script SQL para criar:'); console.log(' sql/setup-bucket-catalogo.sql\n'); return; } // 2. Testar criação de pasta console.log('2️⃣ Testando criação de pasta...'); const testBuffer = Buffer.from('teste', 'utf-8'); const testPath = 'produto_test/test.txt'; const { data: uploadData, error: uploadError } = await supabase .storage .from('catalogo') .upload(testPath, testBuffer, { contentType: 'text/plain', upsert: true }); if (uploadError) { console.error('❌ Erro ao fazer upload:', uploadError.message); console.log('\n💡 Possíveis causas:'); console.log(' 1. Políticas RLS não configuradas'); console.log(' 2. Usando ANON_KEY em vez de SERVICE_KEY'); console.log(' 3. Bucket não é público'); console.log('\n📋 Execute o script SQL completo:'); console.log(' sql/setup-bucket-catalogo.sql\n'); return; } console.log('✅ Upload teste realizado com sucesso!'); console.log(' - Path:', uploadData.path); console.log(''); // 3. Verificar URL pública console.log('3️⃣ Verificando URL pública...'); const { data: urlData } = supabase .storage .from('catalogo') .getPublicUrl(testPath); console.log('✅ URL pública gerada:'); console.log(' ', urlData.publicUrl); console.log(''); // 4. Listar arquivos console.log('4️⃣ Listando arquivos...'); const { data: files, error: listError } = await supabase .storage .from('catalogo') .list('produto_test'); if (listError) { console.error('❌ Erro ao listar:', listError.message); } else { console.log('✅ Arquivos encontrados:', files.length); files.forEach(file => { console.log(' -', file.name); }); console.log(''); } // 5. Limpar teste console.log('5️⃣ Limpando arquivo de teste...'); const { error: deleteError } = await supabase .storage .from('catalogo') .remove([testPath]); if (deleteError) { console.error('❌ Erro ao deletar:', deleteError.message); } else { console.log('✅ Arquivo de teste removido'); } console.log('\n🎉 TODOS OS TESTES PASSARAM!'); console.log('\n✅ O bucket "catalogo" está configurado corretamente.'); console.log('✅ Você pode usar o sistema de fotos adicionais.'); } catch (error) { console.error('\n❌ Erro inesperado:', error.message); console.error(error); } } testCatalogoBucket();