-- ===================================================== -- ALTERAÇÃO DA TABELA DESPESAS PARA CAMPOS LIVRES -- ===================================================== -- Adicionar novos campos de texto livre ALTER TABLE despesas ADD COLUMN IF NOT EXISTS tipo_nome TEXT; ALTER TABLE despesas ADD COLUMN IF NOT EXISTS fornecedor_nome TEXT; -- Migrar dados existentes (se houver) UPDATE despesas SET tipo_nome = ( SELECT nome FROM tipos_despesas WHERE tipos_despesas.id = despesas.tipo_despesa_id ) WHERE tipo_despesa_id IS NOT NULL AND tipo_nome IS NULL; UPDATE despesas SET fornecedor_nome = ( SELECT razao_social FROM fornecedores WHERE fornecedores.id = despesas.fornecedor_id ) WHERE fornecedor_id IS NOT NULL AND fornecedor_nome IS NULL; -- Remover as constraints das chaves estrangeiras (se existirem) ALTER TABLE despesas DROP CONSTRAINT IF EXISTS despesas_tipo_despesa_id_fkey; ALTER TABLE despesas DROP CONSTRAINT IF EXISTS despesas_fornecedor_id_fkey; -- Tornar os campos antigos opcionais (para compatibilidade) ALTER TABLE despesas ALTER COLUMN tipo_despesa_id DROP NOT NULL; -- Criar índice nos novos campos para performance CREATE INDEX IF NOT EXISTS idx_despesas_tipo_nome ON despesas(tipo_nome); CREATE INDEX IF NOT EXISTS idx_despesas_fornecedor_nome ON despesas(fornecedor_nome); -- Comentários para documentação COMMENT ON COLUMN despesas.tipo_nome IS 'Nome do tipo de despesa (campo livre)'; COMMENT ON COLUMN despesas.fornecedor_nome IS 'Nome do fornecedor (campo livre)';