-- =============================================
-- 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
*/
