chore: sincroniza projeto para gitea
This commit is contained in:
108
EXECUTAR-NO-SUPABASE.sql
Normal file
108
EXECUTAR-NO-SUPABASE.sql
Normal file
@@ -0,0 +1,108 @@
|
||||
-- =============================================
|
||||
-- 🚀 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');
|
||||
Reference in New Issue
Block a user