-- ============================================================
-- ADICIONAR CAMPOS PARA TIPOS DE INTEGRAÇÃO
-- ============================================================
-- fltipo: 'origem'  = Origem de Dados (SQL SELECT)
--         'conexao' = Conexão com Banco (credenciais DB)
--         'modelo'  = Modelo de Integração (amarra origem + conexao + mapeamento)
-- sql_origem: SQL da consulta (apenas para tipo 'origem')
-- cdorigem: FK para origem (para tipo 'modelo')
-- cdmodelo: FK para conexao (reutilizado na tabela para tipo 'modelo')

-- Adicionar campo tipo
ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS fltipo VARCHAR(20) DEFAULT 'conexao' CHECK (fltipo IN ('origem', 'conexao', 'modelo'));

-- Adicionar campo SQL da origem
ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS sql_origem TEXT;

-- Adicionar campo referência à origem (para conexões)
ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS cdorigem INT REFERENCES back.integracao(cdintegracao);

-- Atualizar registros existentes como 'conexao'
UPDATE back.integracao SET fltipo = 'conexao' WHERE fltipo IS NULL;

-- Tornar campos de banco opcionais (para permitir tipo origem)
ALTER TABLE back.integracao ALTER COLUMN tipo_banco DROP NOT NULL;
ALTER TABLE back.integracao ALTER COLUMN host DROP NOT NULL;
ALTER TABLE back.integracao ALTER COLUMN dbname DROP NOT NULL;
ALTER TABLE back.integracao ALTER COLUMN usuario DROP NOT NULL;

-- Comentários
COMMENT ON COLUMN back.integracao.fltipo IS 'Tipo: origem (query SQL) ou conexao (banco de dados)';
COMMENT ON COLUMN back.integracao.sql_origem IS 'Query SQL da origem de dados (apenas tipo origem)';
COMMENT ON COLUMN back.integracao.cdorigem IS 'Origem de dados vinculada (apenas tipo conexao)';
