/** * Estrutura do "Fluxo de Resolução" (motivos + resolução do atendimento). * Cria de forma idempotente no Firebird: * - Tabela CHATC2_MOTIVOS_ATENDIMENTO * - Flags em CHATC2_CONFIGURACOES_EMPRESA (CFE_MOTIVO_*, CFE_RESOLUCAO_*) * - Colunas CON_MOTIVO_ID / CON_RESOLUCAO em CHATC2_CONVERSAS * * Usa DDL no subconjunto que funciona nos dois bancos (INTEGER, VARCHAR, CHAR, * ALTER TABLE ... ADD). A tabela nova é criada com nome MAIÚSCULO entre aspas * para manter a convenção do schema migrado. */ const db = require('./database'); const prontos = {}; async function tentar(alias, sql) { // DDL idempotente: ignora erros de "já existe" (e similares entre dialetos) try { await db.execute(alias, sql); } catch (e) { /* noop */ } } async function garantirEstrutura(alias) { if (prontos[alias]) return; await tentar(alias, `CREATE TABLE "CHATC2_MOTIVOS_ATENDIMENTO" ( MOT_CODIGO_ID INTEGER NOT NULL PRIMARY KEY, MOT_EMPRESA_ID INTEGER, MOT_DESCRICAO VARCHAR(150), MOT_SITUACAO CHAR(1) DEFAULT 'A' )`); await tentar(alias, `ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_MOTIVO_VISUALIZAR CHAR(1) DEFAULT 'N'`); await tentar(alias, `ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_MOTIVO_OBRIGATORIO CHAR(1) DEFAULT 'N'`); await tentar(alias, `ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_RESOLUCAO_VISUALIZAR CHAR(1) DEFAULT 'N'`); await tentar(alias, `ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_RESOLUCAO_OBRIGATORIO CHAR(1) DEFAULT 'N'`); // Envio de boleto na conversa (checkbox em Configurações > Empresa) await tentar(alias, `ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_ENVIAR_BOLETO CHAR(1) DEFAULT 'N'`); await tentar(alias, `ALTER TABLE CHATC2_CONVERSAS ADD CON_MOTIVO_ID INTEGER`); await tentar(alias, `ALTER TABLE CHATC2_CONVERSAS ADD CON_RESOLUCAO VARCHAR(4000)`); prontos[alias] = true; } module.exports = { garantirEstrutura };