-- ============================================================
-- MIGRAR TABELA back.integracao PARA NOVO MODELO SIMPLIFICADO (PostgreSQL)
-- ============================================================
-- Novo modelo: Uma integração = Uma conexão + Uma SQL origem
-- Sem mais fltipo, cdmodelo, cdorigem (hierarquia 3 níveis)

-- 1. Adicionar campos faltantes se não existirem
ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS tipo_banco VARCHAR(50) DEFAULT 'pgsql';

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS host VARCHAR(255);

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS porta INTEGER DEFAULT 5432;

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS dbname VARCHAR(255);

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS usuario VARCHAR(255);

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS senha_encrypted TEXT;

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS schema_banco VARCHAR(255);

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS sql_origem TEXT;

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS flativo INTEGER DEFAULT 0;

ALTER TABLE back.integracao 
ADD COLUMN IF NOT EXISTS ultima_sincronizacao TIMESTAMP NULL;

-- 3. Definir flativo=1 para integrações válidas (com dados de conexão)
UPDATE back.integracao 
SET flativo = 1 
WHERE tipo_banco IS NOT NULL 
  AND host IS NOT NULL 
  AND dbname IS NOT NULL 
  AND usuario IS NOT NULL;

-- 4. Criar tabela back.integracao_empresa se não existir
-- (Vincula integrações a empresas para controle de acesso)
CREATE TABLE IF NOT EXISTS back.integracao_empresa (
  cdintegracao INTEGER NOT NULL,
  cdempresa INTEGER NOT NULL,
  flativo INTEGER DEFAULT 1,
  PRIMARY KEY (cdintegracao, cdempresa),
  FOREIGN KEY (cdintegracao) REFERENCES back.integracao(cdintegracao) ON DELETE CASCADE
);

-- FIM DA MIGRAÇÃO
