chore: sincroniza projeto para gitea
This commit is contained in:
111
sql/supabase-storage.sql
Normal file
111
sql/supabase-storage.sql
Normal file
@@ -0,0 +1,111 @@
|
||||
-- =============================================
|
||||
-- CONFIGURAÇÃO DE STORAGE (BUCKETS) NO SUPABASE
|
||||
-- =============================================
|
||||
|
||||
-- Criar bucket para imagens de produtos
|
||||
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
|
||||
VALUES (
|
||||
'produtos',
|
||||
'produtos',
|
||||
true,
|
||||
5242880, -- 5MB
|
||||
ARRAY['image/jpeg', 'image/png', 'image/webp', 'image/gif']
|
||||
) ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- Criar bucket para imagens do catálogo (otimizadas)
|
||||
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
|
||||
VALUES (
|
||||
'catalogo',
|
||||
'catalogo',
|
||||
true,
|
||||
3145728, -- 3MB
|
||||
ARRAY['image/jpeg', 'image/png', 'image/webp']
|
||||
) ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- =============================================
|
||||
-- POLÍTICAS DE ACESSO AOS BUCKETS
|
||||
-- =============================================
|
||||
|
||||
-- Política para permitir upload de imagens de produtos (apenas usuários autenticados)
|
||||
CREATE POLICY "Permitir upload de imagens de produtos" ON storage.objects
|
||||
FOR INSERT WITH CHECK (
|
||||
bucket_id = 'produtos' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- Política para permitir leitura pública de imagens de produtos
|
||||
CREATE POLICY "Permitir leitura pública de imagens de produtos" ON storage.objects
|
||||
FOR SELECT USING (bucket_id = 'produtos');
|
||||
|
||||
-- Política para permitir atualização de imagens de produtos
|
||||
CREATE POLICY "Permitir atualização de imagens de produtos" ON storage.objects
|
||||
FOR UPDATE WITH CHECK (
|
||||
bucket_id = 'produtos' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- Política para permitir exclusão de imagens de produtos
|
||||
CREATE POLICY "Permitir exclusão de imagens de produtos" ON storage.objects
|
||||
FOR DELETE USING (
|
||||
bucket_id = 'produtos' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- Política para permitir upload de imagens do catálogo
|
||||
CREATE POLICY "Permitir upload de imagens do catálogo" ON storage.objects
|
||||
FOR INSERT WITH CHECK (
|
||||
bucket_id = 'catalogo' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- Política para permitir leitura pública de imagens do catálogo
|
||||
CREATE POLICY "Permitir leitura pública de imagens do catálogo" ON storage.objects
|
||||
FOR SELECT USING (bucket_id = 'catalogo');
|
||||
|
||||
-- Política para permitir atualização de imagens do catálogo
|
||||
CREATE POLICY "Permitir atualização de imagens do catálogo" ON storage.objects
|
||||
FOR UPDATE WITH CHECK (
|
||||
bucket_id = 'catalogo' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- Política para permitir exclusão de imagens do catálogo
|
||||
CREATE POLICY "Permitir exclusão de imagens do catálogo" ON storage.objects
|
||||
FOR DELETE USING (
|
||||
bucket_id = 'catalogo' AND
|
||||
auth.role() = 'authenticated'
|
||||
);
|
||||
|
||||
-- =============================================
|
||||
-- FUNÇÕES AUXILIARES PARA STORAGE
|
||||
-- =============================================
|
||||
|
||||
-- Função para gerar URL pública de uma imagem
|
||||
CREATE OR REPLACE FUNCTION get_public_url(bucket_name text, file_path text)
|
||||
RETURNS text AS $$
|
||||
BEGIN
|
||||
RETURN 'https://ydhzylfnpqlxnzfcclla.supabase.co/storage/v1/object/public/' || bucket_name || '/' || file_path;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Função para otimizar nome de arquivo
|
||||
CREATE OR REPLACE FUNCTION generate_file_name(original_name text)
|
||||
RETURNS text AS $$
|
||||
DECLARE
|
||||
extension text;
|
||||
clean_name text;
|
||||
timestamp_str text;
|
||||
BEGIN
|
||||
-- Extrair extensão
|
||||
extension := lower(substring(original_name from '\.([^.]*)$'));
|
||||
|
||||
-- Limpar nome (remover caracteres especiais)
|
||||
clean_name := regexp_replace(lower(original_name), '[^a-z0-9.]', '_', 'g');
|
||||
|
||||
-- Gerar timestamp
|
||||
timestamp_str := to_char(now(), 'YYYYMMDD_HH24MISS');
|
||||
|
||||
-- Retornar nome otimizado
|
||||
RETURN timestamp_str || '_' || clean_name;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
Reference in New Issue
Block a user