-- ============================================= -- CORRIGIR TABELAS FALTANTES -- ============================================= -- Criar tabela de configurações se não existir 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() ); -- Inserir configurações padrão INSERT INTO configuracoes (chave, valor, descricao, tipo) VALUES ('evolution_api_url', '', 'URL da API Evolution', 'string'), ('evolution_api_key', '', 'Chave da API Evolution', 'string'), ('evolution_instance_name', '', 'Nome da instância Evolution', 'string'), ('chatgpt_api_key', '', 'Chave da API ChatGPT', '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; -- Verificar se a tabela emprestimos existe, se não criar 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() ); -- Criar tabela de itens de empréstimo se não existir 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() ); -- Verificar se a tabela devolucoes existe, se não criar CREATE TABLE IF NOT EXISTS devolucoes ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, venda_id UUID REFERENCES vendas(id), tipo VARCHAR(20) DEFAULT 'devolucao' CHECK (tipo IN ('devolucao', 'troca')), motivo TEXT, data_devolucao DATE NOT NULL, valor_devolvido DECIMAL(10,2), observacoes TEXT, status VARCHAR(20) DEFAULT 'processada' CHECK (status IN ('pendente', 'processada', 'cancelada')), created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Criar tabela de itens de devolução se não existir CREATE TABLE IF NOT EXISTS devolucao_itens ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, devolucao_id UUID REFERENCES devolucoes(id) ON DELETE CASCADE, venda_item_id UUID REFERENCES venda_itens(id), quantidade INTEGER NOT NULL, motivo TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Verificar se existe a coluna foto_principal na tabela produtos 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 $$; -- Criar índices para melhor performance CREATE INDEX IF NOT EXISTS idx_configuracoes_chave ON configuracoes(chave); 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_devolucoes_venda ON devolucoes(venda_id); CREATE INDEX IF NOT EXISTS idx_devolucoes_data ON devolucoes(data_devolucao); -- Verificar se as tabelas foram criadas SELECT 'Tabelas verificadas/criadas:' as status; SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name IN ('configuracoes', 'emprestimos', 'emprestimo_itens', 'devolucoes', 'devolucao_itens') ORDER BY table_name;