Skip to content

DevRubens/supabase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Supabase – Loja (DB + RLS + Storage + Edge Functions)

Backend no Supabase com:

  • Postgres (tabelas, views, triggers e RLS)
  • Storage (exports para CSV)
  • Edge Functions (enviar e-mail de confirmação e exportar CSV)

📦 Estrutura do projeto

<projeto-raiz>/
  supabase/
    migrations/
      001_init.sql
      002_storage_policies.sql
    functions/
      send-order-confirmation/
        index.ts
      export-order-csv/
        index.ts
    .env.example        # modelo de variáveis

🔐 Variáveis de ambiente

Crie o arquivo supabase/.env (ou copie de .env.example) com:

SB_URL=https://<PROJECT_REF>.supabase.co
SB_SERVICE_ROLE_KEY=<SUA_SERVICE_ROLE_KEY>     
RESEND_API_KEY=<SUA_RESEND_API_KEY>            # opcional, para envio de e-mail
SUPABASE_KEY=<SUA_ANON_KEY>                    # usar no front

🚀 Setup

Rode sempre a partir da raiz do projeto:

# 1) login
supabase login
supabase link --project-ref <PROJECT_REF>

# 2) migrar o banco hospedado
supabase db push

# 3) registrar secrets para as Edge Functions
supabase secrets set --env-file ./supabase/.env

# 4) publicar as Functions
supabase functions deploy send-order-confirmation
supabase functions deploy export-order-csv

🗃️ Banco de dados

  • Tabelas: profiles, customers, products, orders, order_items
  • View: v_order_details
  • Triggers: recalculam orders.total_cents ao inserir/alterar itens
  • RLS: dono vê/edita seus dados; staff/admin

🧪 Seed / Teste via SQL Editor do Studio

-- 1) Ver usuários
select id, email from auth.users order by created_at desc limit 20;

-- 2) Criar perfil
with u as (select id from auth.users where email = 'cliente@teste.com' limit 1)
insert into public.profiles (user_id, full_name, role)
select u.id, 'Cliente Para Teste', 'user' from u
on conflict (user_id) do nothing;

with u as (select id from auth.users where email = 'cliente@teste.com' limit 1)
insert into public.customers (user_id, name, email)
select u.id, 'Cliente Para Teste', 'cliente@teste.com' from u
on conflict (user_id) do nothing;

-- 3) Produto demonstrativo
insert into public.products (name, sku, price_cents, active)
values ('Camisa Azul', 'SKU-001', 4500, true)
on conflict (sku) do nothing;

-- 4) Criar pedido + item
with ord as (
  insert into public.orders (customer_id, status)
  select c.id, 'draft'
  from public.customers c join auth.users u on u.id = c.user_id
  where u.email = 'cliente@teste.com'
  returning id
)
insert into public.order_items (order_id, product_id, quantity, unit_price_cents)
select ord.id, p.id, 2, p.price_cents
from ord join public.products p on p.sku = 'SKU-001';

-- 5) Conferir
select * from public.orders order by created_at desc limit 1;
select * from public.v_order_details order by created_at desc limit 5;

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors