-- ====================================================================
-- SCRIPT DE CONFIGURAÇÃO DO BANCO DE DADOS - GRANDE GOSTOSA (GG Fitwear)
-- Cole este script no SQL Editor do seu projeto Supabase para criar
-- a estrutura e popular com dados de demonstração iniciais.
-- ====================================================================

-- 1. LIMPEZA DE TABELAS EXISTENTES (Opcional, cuidado se já tiver dados)
DROP TABLE IF EXISTS cart_items CASCADE;
DROP TABLE IF EXISTS carts CASCADE;
DROP TABLE IF EXISTS order_items CASCADE;
DROP TABLE IF EXISTS orders CASCADE;
DROP TABLE IF EXISTS products CASCADE;

-- 2. CRIAÇÃO DAS TABELAS

-- Tabela de Produtos
CREATE TABLE products (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    category VARCHAR(100) NOT NULL,
    image_url VARCHAR(500),
    stock INTEGER DEFAULT 100,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

-- Tabela de Pedidos
CREATE TABLE orders (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    customer_name VARCHAR(255) NOT NULL,
    customer_email VARCHAR(255) NOT NULL,
    customer_phone VARCHAR(50) NOT NULL,
    total DECIMAL(10, 2) NOT NULL,
    status VARCHAR(50) NOT NULL CHECK (status IN ('completed', 'pending', 'cancelled')),
    items_count INTEGER NOT NULL DEFAULT 1
);

-- Itens do Pedido
CREATE TABLE order_items (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    order_id UUID REFERENCES orders(id) ON DELETE CASCADE,
    product_id UUID REFERENCES products(id) ON DELETE SET NULL,
    product_name VARCHAR(255) NOT NULL,
    quantity INTEGER NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);

-- Tabela de Carrinhos
CREATE TABLE carts (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    customer_name VARCHAR(255),
    customer_email VARCHAR(255),
    customer_phone VARCHAR(50),
    status VARCHAR(50) NOT NULL CHECK (status IN ('active', 'abandoned', 'converted')),
    total_value DECIMAL(10, 2) NOT NULL DEFAULT 0.00
);

-- Itens do Carrinho
CREATE TABLE cart_items (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    cart_id UUID REFERENCES carts(id) ON DELETE CASCADE,
    product_id UUID REFERENCES products(id) ON DELETE SET NULL,
    product_name VARCHAR(255) NOT NULL,
    quantity INTEGER NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);

-- Habilitar Row Level Security (RLS) em todas as tabelas
ALTER TABLE products ENABLE ROW LEVEL SECURITY;
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
ALTER TABLE order_items ENABLE ROW LEVEL SECURITY;
ALTER TABLE carts ENABLE ROW LEVEL SECURITY;
ALTER TABLE cart_items ENABLE ROW LEVEL SECURITY;

-- Políticas simplificadas para fins de teste/leitura e escrita pública no dashboard
-- NOTA: Em produção real, você deve ajustar essas políticas conforme seu sistema de autenticação.
CREATE POLICY "Leitura pública de produtos" ON products FOR SELECT USING (true);
CREATE POLICY "Leitura pública de pedidos" ON orders FOR SELECT USING (true);
CREATE POLICY "Escrita pública de pedidos" ON orders FOR INSERT WITH CHECK (true);
CREATE POLICY "Leitura pública de itens do pedido" ON order_items FOR SELECT USING (true);
CREATE POLICY "Escrita pública de itens do pedido" ON order_items FOR INSERT WITH CHECK (true);
CREATE POLICY "Leitura pública de carrinhos" ON carts FOR SELECT USING (true);
CREATE POLICY "Escrita/Atualização pública de carrinhos" ON carts FOR ALL USING (true);
CREATE POLICY "Leitura pública de itens do carrinho" ON cart_items FOR SELECT USING (true);
CREATE POLICY "Escrita/Atualização pública de itens do carrinho" ON cart_items FOR ALL USING (true);

-- 3. INSERÇÃO DE DADOS DE DEMONSTRAÇÃO (SEED DATA)

-- Produtos Fitness GG Fitwear
INSERT INTO products (id, name, price, category, stock) VALUES
('p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 149.90, 'Leggins', 80),
('p1000000-0000-0000-0000-000000000002', 'Legging Gloss Max Preta', 139.90, 'Leggins', 120),
('p1000000-0000-0000-0000-000000000003', 'Top Cropped Cross Alças Finas Vinho', 79.90, 'Tops', 95),
('p1000000-0000-0000-0000-000000000004', 'Top Sustentação Max Magenta', 89.90, 'Tops', 60),
('p1000000-0000-0000-0000-000000000005', 'Conjunto Vigor (Top + Calça) Cereja', 219.00, 'Conjuntos', 40),
('p1000000-0000-0000-0000-000000000006', 'Conjunto Glow (Top + Bermuda) Preto', 189.90, 'Conjuntos', 35),
('p1000000-0000-0000-0000-000000000007', 'Short Dry Fit Ciclista Grafite', 69.90, 'Bermudas', 150),
('p1000000-0000-0000-0000-000000000008', 'Macacão Fitness Peça Única Concept', 179.90, 'Peça Única', 25);

-- Pedidos dos últimos 30 dias (Simulados de forma regressiva a partir de 30-Jun-2026)
INSERT INTO orders (id, created_at, customer_name, customer_email, customer_phone, total, status, items_count) VALUES
-- Hoje (30 de Junho)
('o1000000-0000-0000-0000-000000000001', '2026-06-30 09:15:00-03', 'Mariana Souza', 'mari.souza@gmail.com', '11999998888', 229.80, 'completed', 2),
('o1000000-0000-0000-0000-000000000002', '2026-06-30 11:30:00-03', 'Carla Mendes', 'carla.mendes@outlook.com', '21988887777', 149.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000003', '2026-06-30 14:20:00-03', 'Juliana Lima', 'juliana.lima@hotmail.com', '11977776666', 219.00, 'pending', 1),
-- Ontem (29 de Junho)
('o1000000-0000-0000-0000-000000000004', '2026-06-29 10:05:00-03', 'Fernanda Silva', 'fernanda.s@gmail.com', '31966665555', 389.70, 'completed', 3),
('o1000000-0000-0000-0000-000000000005', '2026-06-29 13:40:00-03', 'Patricia Costa', 'patty.costa@yahoo.com.br', '11955554444', 79.90, 'cancelled', 1),
('o1000000-0000-0000-0000-000000000006', '2026-06-29 16:50:00-03', 'Gabriela Santos', 'gabi.santos@gmail.com', '19944443333', 139.90, 'completed', 1),
-- 28 de Junho
('o1000000-0000-0000-0000-000000000007', '2026-06-28 08:30:00-03', 'Aline Oliveira', 'aline.oli@gmail.com', '11933332222', 299.80, 'completed', 2),
('o1000000-0000-0000-0000-000000000008', '2026-06-28 15:10:00-03', 'Camila Rocha', 'camila.rocha@uol.com.br', '81922221111', 179.90, 'completed', 1),
-- 27 de Junho
('o1000000-0000-0000-0000-000000000009', '2026-06-27 11:22:00-03', 'Leticia Melo', 'leticia.melo@gmail.com', '21911110000', 89.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000010', '2026-06-27 18:45:00-03', 'Bruna Tavares', 'bruna.tav@gmail.com', '11999990001', 219.00, 'completed', 1),
-- 26 de Junho
('o1000000-0000-0000-0000-000000000011', '2026-06-26 14:10:00-03', 'Renata Vasconcellos', 'renata.v@gmail.com', '11999990002', 149.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000012', '2026-06-26 19:30:00-03', 'Sandra Alencar', 'sandra.a@outlook.com', '31999990003', 159.80, 'completed', 2),
-- Outros dias espalhados para dar volume
('o1000000-0000-0000-0000-000000000013', '2026-06-24 10:15:00-03', 'Amanda Rodrigues', 'amanda.r@gmail.com', '11999990004', 369.80, 'completed', 2),
('o1000000-0000-0000-0000-000000000014', '2026-06-22 13:00:00-03', 'Vivian Sales', 'vivian.sales@gmail.com', '21999990005', 219.00, 'completed', 1),
('o1000000-0000-0000-0000-000000000015', '2026-06-20 16:30:00-03', 'Larissa Barbosa', 'larissa.b@gmail.com', '11999990006', 79.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000016', '2026-06-18 11:20:00-03', 'Tatiana Dias', 'tati.dias@gmail.com', '11999990007', 359.80, 'completed', 3),
('o1000000-0000-0000-0000-000000000017', '2026-06-15 09:40:00-03', 'Vanessa Moreira', 'vanessa.m@gmail.com', '11999990008', 139.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000018', '2026-06-10 15:15:00-03', 'Isabela Freitas', 'isabela.f@gmail.com', '11999990009', 219.00, 'completed', 1),
('o1000000-0000-0000-0000-000000000019', '2026-06-05 14:00:00-03', 'Priscila Nogueira', 'pri.nog@gmail.com', '11999990010', 149.90, 'completed', 1),
('o1000000-0000-0000-0000-000000000020', '2026-06-01 11:10:00-03', 'Beatriz Pinheiro', 'beatriz.p@gmail.com', '11999990011', 299.80, 'completed', 2);

-- Itens dos Pedidos
INSERT INTO order_items (order_id, product_id, product_name, quantity, price) VALUES
-- Mariana Souza
('o1000000-0000-0000-0000-000000000001', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 1, 149.90),
('o1000000-0000-0000-0000-000000000001', 'p1000000-0000-0000-0000-000000000003', 'Top Cropped Cross Alças Finas Vinho', 1, 79.90),
-- Carla Mendes
('o1000000-0000-0000-0000-000000000002', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 1, 149.90),
-- Juliana Lima
('o1000000-0000-0000-0000-000000000003', 'p1000000-0000-0000-0000-000000000005', 'Conjunto Vigor (Top + Calça) Cereja', 1, 219.00),
-- Fernanda Silva
('o1000000-0000-0000-0000-000000000004', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 1, 149.90),
('o1000000-0000-0000-0000-000000000002', 'p1000000-0000-0000-0000-000000000002', 'Legging Gloss Max Preta', 1, 139.90),
('o1000000-0000-0000-0000-000000000004', 'o1000000-0000-0000-0000-000000000004', 'Top Sustentação Max Magenta', 1, 89.90),
-- Outros
('o1000000-0000-0000-0000-000000000005', 'p1000000-0000-0000-0000-000000000003', 'Top Cropped Cross Alças Finas Vinho', 1, 79.90),
('o1000000-0000-0000-0000-000000000006', 'p1000000-0000-0000-0000-000000000002', 'Legging Gloss Max Preta', 1, 139.90),
('o1000000-0000-0000-0000-000000000007', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 2, 149.90);

-- Carrinhos (Ativos e Abandonados) dos últimos 30 dias
INSERT INTO carts (id, created_at, updated_at, customer_name, customer_email, customer_phone, status, total_value) VALUES
-- Hoje (30 de Junho)
('c1000000-0000-0000-0000-000000000001', '2026-06-30 08:30:00-03', '2026-06-30 08:45:00-03', 'Debora Ferreira', 'debora.f@gmail.com', '11977770001', 'abandoned', 219.80),
('c1000000-0000-0000-0000-000000000002', '2026-06-30 15:40:00-03', '2026-06-30 15:42:00-03', 'Esther Prado', 'esther.p@gmail.com', '11977770002', 'active', 79.90),
-- Ontem (29 de Junho)
('c1000000-0000-0000-0000-000000000003', '2026-06-29 09:20:00-03', '2026-06-29 09:50:00-03', 'Carolina Santos', 'carol.santos@gmail.com', '21977770003', 'abandoned', 139.90),
('c1000000-0000-0000-0000-000000000004', '2026-06-29 14:15:00-03', '2026-06-29 14:30:00-03', 'Monique Souza', 'monique.s@hotmail.com', '11977770004', 'abandoned', 299.80),
-- 28 de Junho
('c1000000-0000-0000-0000-000000000005', '2026-06-28 11:00:00-03', '2026-06-28 11:20:00-03', 'Renata Garcia', 'renata.g@gmail.com', '31977770005', 'abandoned', 219.00),
-- 27 de Junho
('c1000000-0000-0000-0000-000000000006', '2026-06-27 10:10:00-03', '2026-06-27 10:30:00-03', 'Tais Araujo', 'tais.araujo@gmail.com', '11977770006', 'abandoned', 149.90),
('c1000000-0000-0000-0000-000000000007', '2026-06-27 16:40:00-03', '2026-06-27 16:55:00-03', 'Marina Dantas', 'marina.d@gmail.com', '81977770007', 'abandoned', 89.90),
-- Mais antigos
('c1000000-0000-0000-0000-000000000008', '2026-06-25 15:30:00-03', '2026-06-25 16:00:00-03', 'Elisa Campos', 'elisa.campos@gmail.com', '11977770008', 'abandoned', 229.80),
('c1000000-0000-0000-0000-000000000009', '2026-06-22 10:15:00-03', '2026-06-22 10:45:00-03', 'Thais Custodio', 'thais.cust@gmail.com', '11977770009', 'abandoned', 139.90),
('c1000000-0000-0000-0000-000000000010', '2026-06-20 14:00:00-03', '2026-06-20 14:20:00-03', 'Leticia Aguiar', 'leticia.aguiar@gmail.com', '11977770010', 'abandoned', 219.00);

-- Itens dos Carrinhos
INSERT INTO cart_items (cart_id, product_id, product_name, quantity, price) VALUES
-- Debora Ferreira
('c1000000-0000-0000-0000-000000000001', 'p1000000-0000-0000-0000-000000000007', 'Short Dry Fit Ciclista Grafite', 1, 69.90),
('c1000000-0000-0000-0000-000000000001', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 1, 149.90),
-- Esther Prado
('c1000000-0000-0000-0000-000000000002', 'p1000000-0000-0000-0000-000000000003', 'Top Cropped Cross Alças Finas Vinho', 1, 79.90),
-- Carolina Santos
('c1000000-0000-0000-0000-000000000003', 'p1000000-0000-0000-0000-000000000002', 'Legging Gloss Max Preta', 1, 139.90),
-- Monique Souza
('c1000000-0000-0000-0000-000000000004', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 2, 149.90),
-- Renata Garcia
('c1000000-0000-0000-0000-000000000005', 'p1000000-0000-0000-0000-000000000005', 'Conjunto Vigor (Top + Calça) Cereja', 1, 219.00),
-- Tais Araujo
('c1000000-0000-0000-0000-000000000006', 'p1000000-0000-0000-0000-000000000001', 'Legging Empina Bumbum Jacquard Rosa', 1, 149.90);

-- FIM DO SCRIPT
