chore: sincroniza projeto para gitea

This commit is contained in:
Tiago
2025-11-29 21:31:52 -03:00
parent 33d8645eb4
commit 7e7a0f8867
129 changed files with 24999 additions and 6757 deletions

126
test-upload-catalogo.js Normal file
View File

@@ -0,0 +1,126 @@
// 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();