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

View File

@@ -0,0 +1,179 @@
-- =============================================
-- CONFIGURAR BUCKET 'CATALOGO' PARA FOTOS ADICIONAIS
-- Execute este script no SQL Editor do Supabase
-- =============================================
-- 1. CRIAR BUCKET (se não existir)
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
VALUES (
'catalogo',
'catalogo',
true,
5242880, -- 5MB
ARRAY['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif']
)
ON CONFLICT (id) DO UPDATE
SET
public = true,
file_size_limit = 5242880,
allowed_mime_types = ARRAY['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif'];
-- 2. POLÍTICAS DE ACESSO
-- Remover políticas antigas se existirem
DROP POLICY IF EXISTS "Permitir leitura pública catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir upload autenticado catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir update autenticado catalogo" ON storage.objects;
DROP POLICY IF EXISTS "Permitir delete autenticado catalogo" ON storage.objects;
-- 2.1 Permitir leitura pública
CREATE POLICY "Permitir leitura pública catalogo"
ON storage.objects FOR SELECT
USING (bucket_id = 'catalogo');
-- 2.2 Permitir upload apenas autenticado
CREATE POLICY "Permitir upload autenticado catalogo"
ON storage.objects FOR INSERT
WITH CHECK (
bucket_id = 'catalogo' AND
(auth.role() = 'authenticated' OR auth.role() = 'service_role')
);
-- 2.3 Permitir atualização apenas autenticado
CREATE POLICY "Permitir update autenticado catalogo"
ON storage.objects FOR UPDATE
USING (
bucket_id = 'catalogo' AND
(auth.role() = 'authenticated' OR auth.role() = 'service_role')
);
-- 2.4 Permitir exclusão apenas autenticado
CREATE POLICY "Permitir delete autenticado catalogo"
ON storage.objects FOR DELETE
USING (
bucket_id = 'catalogo' AND
(auth.role() = 'authenticated' OR auth.role() = 'service_role')
);
-- 3. VERIFICAÇÕES
-- Verificar se o bucket foi criado
SELECT
'Bucket criado:' as status,
id,
name,
public,
file_size_limit / 1024 / 1024 as "Tamanho máximo (MB)",
allowed_mime_types as "Tipos permitidos"
FROM storage.buckets
WHERE id = 'catalogo';
-- Verificar políticas
SELECT
'Políticas configuradas:' as status,
policyname,
cmd,
qual
FROM pg_policies
WHERE tablename = 'objects'
AND schemaname = 'storage'
AND policyname LIKE '%catalogo%'
ORDER BY policyname;
-- Contar arquivos existentes (se houver)
SELECT
'Arquivos no bucket:' as status,
COUNT(*) as total,
pg_size_pretty(SUM(COALESCE((metadata->>'size')::bigint, 0))) as "Tamanho total"
FROM storage.objects
WHERE bucket_id = 'catalogo';
-- =============================================
-- ESTRUTURA DE PASTAS RECOMENDADA
-- =============================================
/*
catalogo/
├── produto_1/
│ ├── 1234567890-foto1.jpg
│ ├── 1234567891-foto2.jpg
│ └── 1234567892-foto3.jpg
├── produto_2/
│ ├── 1234567893-foto1.jpg
│ └── 1234567894-foto2.jpg
└── produto_3/
└── 1234567895-foto1.jpg
Organização:
- Pasta por produto: produto_{id}
- Nome único com timestamp
- Acesso público para leitura
- Upload/Delete apenas autenticado
*/
-- =============================================
-- EXEMPLO DE USO VIA SQL
-- =============================================
-- Listar fotos de um produto específico
-- (Substitua 123 pelo ID do produto)
/*
SELECT
name as "Nome do arquivo",
created_at as "Data de upload",
pg_size_pretty((metadata->>'size')::bigint) as "Tamanho"
FROM storage.objects
WHERE bucket_id = 'catalogo'
AND name LIKE 'produto_123/%'
ORDER BY created_at DESC;
*/
-- =============================================
-- LIMPEZA (USE COM CUIDADO!)
-- =============================================
-- Para remover todas as fotos de um produto
-- ATENÇÃO: Esta operação é irreversível!
/*
DELETE FROM storage.objects
WHERE bucket_id = 'catalogo'
AND name LIKE 'produto_123/%';
*/
-- Para remover o bucket completo (CUIDADO!)
/*
DELETE FROM storage.objects WHERE bucket_id = 'catalogo';
DELETE FROM storage.buckets WHERE id = 'catalogo';
*/
-- =============================================
-- INSTRUÇÕES FINAIS
-- =============================================
/*
✅ BUCKET 'CATALOGO' CONFIGURADO COM SUCESSO!
Próximos passos:
1. ✅ Execute este script no SQL Editor do Supabase
2. ✅ Verifique as mensagens de verificação acima
3. ✅ Acesse o painel admin: Site / Catalogo
4. ✅ Clique em "Fotos" em qualquer produto
5. ✅ Faça upload de uma foto de teste
6. ✅ Verifique no Supabase Storage > catalogo
O bucket está pronto para uso!
Características:
- 📁 Organização por produto
- 🔒 Segurança com RLS
- 🌐 Acesso público para leitura
- 📸 Suporta: JPEG, PNG, WebP, GIF
- 📦 Limite: 5MB por arquivo
- 🚀 Integrado com site de catálogo
Para adicionar fotos via código:
- Frontend: Componente SiteCatalogo
- Backend: POST /api/produtos/:id/fotos-catalogo
- Site: Carrega automaticamente em script.js
*/