-- ============================================= -- 🚀 EXECUTE ESTE SQL NO SUPABASE PARA CORRIGIR TUDO -- ============================================= -- 1. Criar tabela de tipos de despesas CREATE TABLE IF NOT EXISTS tipos_despesa ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, nome VARCHAR(255) NOT NULL UNIQUE, descricao TEXT, ativo BOOLEAN DEFAULT true, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 2. Criar tabela de empréstimos CREATE TABLE IF NOT EXISTS emprestimos ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, cliente_id UUID REFERENCES clientes(id), data_emprestimo DATE NOT NULL, data_devolucao_prevista DATE NOT NULL, data_devolucao_real DATE, observacoes TEXT, status VARCHAR(20) DEFAULT 'ativo' CHECK (status IN ('ativo', 'devolvido', 'cancelado')), created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 3. Criar tabela de itens de empréstimo CREATE TABLE IF NOT EXISTS emprestimo_itens ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, emprestimo_id UUID REFERENCES emprestimos(id) ON DELETE CASCADE, produto_id UUID REFERENCES produtos(id), produto_variacao_id UUID REFERENCES produto_variacoes(id), quantidade INTEGER NOT NULL, observacoes TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 4. Criar tabela de configurações CREATE TABLE IF NOT EXISTS configuracoes ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, chave VARCHAR(255) NOT NULL UNIQUE, valor TEXT, descricao TEXT, tipo VARCHAR(50) DEFAULT 'string', created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 5. Inserir tipos de despesas padrão INSERT INTO tipos_despesa (nome, descricao) VALUES ('Aluguel', 'Despesas com aluguel do estabelecimento'), ('Energia', 'Conta de energia elétrica'), ('Água', 'Conta de água'), ('Internet', 'Despesas com internet e telefone'), ('Marketing', 'Despesas com publicidade e marketing'), ('Transporte', 'Despesas com transporte e combustível'), ('Material', 'Material de escritório e loja'), ('Manutenção', 'Manutenção e reparos'), ('Outros', 'Outras despesas diversas') ON CONFLICT (nome) DO NOTHING; -- 6. Inserir configurações básicas INSERT INTO configuracoes (chave, valor, descricao, tipo) VALUES ('evolution_api_url', '', 'URL da API Evolution', 'string'), ('whatsapp_alertas_ativo', 'false', 'Ativar alertas WhatsApp', 'boolean'), ('whatsapp_primeiro_alerta_dias', '3', 'Dias antes para primeiro alerta', 'number'), ('whatsapp_segundo_alerta_dias', '0', 'Dias antes para segundo alerta', 'number'), ('whatsapp_alerta_pos_vencimento_dias', '3', 'Dias após vencimento para alerta', 'number') ON CONFLICT (chave) DO NOTHING; -- 7. Adicionar colunas faltantes na tabela despesas DO $$ BEGIN -- Verificar se existe coluna tipo_id IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'despesas' AND column_name = 'tipo_id') THEN ALTER TABLE despesas ADD COLUMN tipo_id UUID REFERENCES tipos_despesa(id); END IF; -- Verificar se existe coluna fornecedor_id IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'despesas' AND column_name = 'fornecedor_id') THEN ALTER TABLE despesas ADD COLUMN fornecedor_id UUID REFERENCES fornecedores(id); END IF; END $$; -- 8. Adicionar coluna foto_principal se não existir DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'produtos' AND column_name = 'foto_principal') THEN ALTER TABLE produtos ADD COLUMN foto_principal TEXT; END IF; END $$; -- 9. Criar índices para performance CREATE INDEX IF NOT EXISTS idx_tipos_despesa_nome ON tipos_despesa(nome); CREATE INDEX IF NOT EXISTS idx_emprestimos_cliente ON emprestimos(cliente_id); CREATE INDEX IF NOT EXISTS idx_emprestimos_status ON emprestimos(status); CREATE INDEX IF NOT EXISTS idx_configuracoes_chave ON configuracoes(chave); -- 10. Verificar se tudo foi criado SELECT '✅ SETUP COMPLETO!' as resultado; SELECT 'Tabelas criadas:' as info, COUNT(*) as total FROM information_schema.tables WHERE table_schema = 'public' AND table_name IN ('tipos_despesa', 'emprestimos', 'emprestimo_itens', 'configuracoes');