Ajustes 2306
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* Script para corrigir registros existentes com SITUACAO = NULL
|
||||
*
|
||||
* Uso: node scripts/corrigir-situacao.js <alias> [schema]
|
||||
* Ex: node scripts/corrigir-situacao.js novo
|
||||
* Ex: node scripts/corrigir-situacao.js novo at
|
||||
*/
|
||||
require('dotenv').config({ path: require('path').resolve(__dirname, '../.env') });
|
||||
const db = require('../src/database');
|
||||
|
||||
async function main() {
|
||||
const alias = process.argv[2] || 'novo';
|
||||
const schema = process.argv[3] ? process.argv[3].trim() : '';
|
||||
const dot = schema ? '.' : '';
|
||||
console.log(`📌 Corrigindo registros no alias "${alias}"${schema ? ', schema "' + schema + '"' : ''}...\n`);
|
||||
|
||||
// 1. Corrigir CHATC2_INSTANCIAS sem INS_SITUACAO
|
||||
const sql1 = `UPDATE ${schema}${dot}"CHATC2_INSTANCIAS" SET "INS_SITUACAO" = 'A' WHERE "INS_SITUACAO" IS NULL OR "INS_SITUACAO" = ''`;
|
||||
console.log(`📌 ${sql1}`);
|
||||
try {
|
||||
const r1 = await db.execute(alias, sql1);
|
||||
console.log(`✅ CHATC2_INSTANCIAS: ${r1.affectedRows} registro(s) atualizado(s)`);
|
||||
} catch (e) {
|
||||
console.log(`⚠️ CHATC2_INSTANCIAS: ${e.message.substring(0, 100)}`);
|
||||
}
|
||||
|
||||
// 2. Corrigir CHATC2_CONVERSAS sem CON_SITUACAO
|
||||
const sql2 = `UPDATE ${schema}${dot}"CHATC2_CONVERSAS" SET "CON_SITUACAO" = 'A' WHERE "CON_SITUACAO" IS NULL OR "CON_SITUACAO" = ''`;
|
||||
console.log(`📌 ${sql2}`);
|
||||
try {
|
||||
const r2 = await db.execute(alias, sql2);
|
||||
console.log(`✅ CHATC2_CONVERSAS: ${r2.affectedRows} registro(s) atualizado(s)`);
|
||||
} catch (e) {
|
||||
console.log(`⚠️ CHATC2_CONVERSAS: ${e.message.substring(0, 100)}`);
|
||||
}
|
||||
|
||||
// 3. Corrigir CHATC2_CONVERSAS_MENSAGENS sem CME_SITUACAO
|
||||
const sql3 = `UPDATE ${schema}${dot}"CHATC2_CONVERSAS_MENSAGENS" SET "CME_SITUACAO" = 'A' WHERE "CME_SITUACAO" IS NULL OR "CME_SITUACAO" = ''`;
|
||||
console.log(`📌 ${sql3}`);
|
||||
try {
|
||||
const r3 = await db.execute(alias, sql3);
|
||||
console.log(`✅ CHATC2_CONVERSAS_MENSAGENS: ${r3.affectedRows} registro(s) atualizado(s)`);
|
||||
} catch (e) {
|
||||
console.log(`⚠️ CHATC2_CONVERSAS_MENSAGENS: ${e.message.substring(0, 100)}`);
|
||||
}
|
||||
|
||||
// 4. Verifica conversa 61111 especificamente
|
||||
const sql4 = `SELECT "CON_CODIGO_ID", "CON_SITUACAO", "CON_STATUS" FROM ${schema}${dot}"CHATC2_CONVERSAS" WHERE "CON_CODIGO_ID" = '61111'`;
|
||||
console.log(`📌 ${sql4}`);
|
||||
try {
|
||||
const conv = await db.query(alias, sql4);
|
||||
if (conv.length > 0) {
|
||||
console.log(`\n📋 Conversa 61111: SITUACAO=${conv[0].CON_SITUACAO || 'NULL'}, STATUS=${conv[0].CON_STATUS}`);
|
||||
|
||||
// Conta mensagens
|
||||
const sql5 = `SELECT COUNT(*) AS CT FROM ${schema}${dot}"CHATC2_CONVERSAS_MENSAGENS" WHERE "CME_CONVERSA_ID" = '61111' AND "CME_SITUACAO" = 'A'`;
|
||||
console.log(`📌 ${sql5}`);
|
||||
const msgs = await db.query(alias, sql5);
|
||||
console.log(`📋 Mensagens ativas na conversa 61111: ${msgs[0]?.CT || 0}`);
|
||||
} else {
|
||||
console.log(`\n❌ Conversa 61111 não encontrada`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(`⚠️ Verificação 61111: ${e.message.substring(0, 100)}`);
|
||||
}
|
||||
|
||||
console.log(`\n✅ Correção concluída!`);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.error(`❌ Erro: ${err.message}`);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -22,9 +22,8 @@
|
||||
const db = require('../src/database');
|
||||
|
||||
// Este script aplica DDL no dialeto Firebird (BLOB SUB_TYPE, etc.).
|
||||
// O schema do PostgreSQL é gerenciado externamente (banco externo) — use este
|
||||
// script apenas para bancos Firebird. Alias padrão: firebird_local.
|
||||
const alias = process.argv[2] || 'firebird_local';
|
||||
// Alias padrão: novo_local.
|
||||
const alias = process.argv[2] || 'novo_local';
|
||||
|
||||
// ============================================================
|
||||
// CONTROLE DE MIGRAÇÕES
|
||||
@@ -428,8 +427,7 @@ async function main() {
|
||||
catch (e) { console.error('❌', e.message); process.exit(1); }
|
||||
if (driver !== 'firebird') {
|
||||
console.log(`⚠️ O alias "${alias}" usa o driver "${driver}". Este script aplica DDL Firebird.`);
|
||||
console.log(' O schema do PostgreSQL é gerenciado no banco externo — nada a fazer aqui.');
|
||||
console.log(' Para migrar um banco Firebird: node scripts/migracoes.js firebird_local\n');
|
||||
console.log(' Para migrar um banco Firebird: node scripts/migracoes.js novo_local\n');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* postinstall.js - Aplica patches de compatibilidade no node-firebird
|
||||
* após npm install, garantindo compatibilidade com Node.js 22+.
|
||||
*/
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const connPath = path.resolve(__dirname, '../node_modules/node-firebird/lib/wire/connection.js');
|
||||
|
||||
if (!fs.existsSync(connPath)) {
|
||||
console.log('[patch] connection.js not found, skipping');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
let content = fs.readFileSync(connPath, 'utf8');
|
||||
let patched = false;
|
||||
|
||||
// ============================================================
|
||||
// Patch 1: SRP empty buffer (Firebird 3.0 Legacy_Auth)
|
||||
// ============================================================
|
||||
const srpOld = (
|
||||
' // TODO : Fallback Srp256 to Srp ?\n' +
|
||||
' /*if (!d.buffer) {\n' +
|
||||
' cnx.sendOpContAuth(\n' +
|
||||
' cnx.clientKeys.public.toString(16),\n' +
|
||||
' DEFAULT_ENCODING,\n' +
|
||||
' accept.pluginName\n' +
|
||||
' );\n' +
|
||||
'\n' +
|
||||
' return cb(new Error(\'login\'));\n' +
|
||||
' }*/\n' +
|
||||
'\n' +
|
||||
' // Check buffer contains salt\n' +
|
||||
' var saltLen = d.buffer.readUInt16LE(0);'
|
||||
);
|
||||
|
||||
const srpNew = (
|
||||
' // No auth data from server - server accepted the connection\n' +
|
||||
' // without requiring SRP. This happens with Firebird 3.0 when\n' +
|
||||
' // the server already validated the client.\n' +
|
||||
' if (!d || !d.buffer) {\n' +
|
||||
" accept.authData = '';\n" +
|
||||
" accept.sessionKey = '';\n" +
|
||||
' } else {\n' +
|
||||
' // Check buffer contains salt\n' +
|
||||
' var saltLen = d.buffer.readUInt16LE(0);'
|
||||
);
|
||||
|
||||
if (content.includes(srpOld)) {
|
||||
content = content.replace(srpOld, srpNew);
|
||||
patched = true;
|
||||
console.log('[patch] Patch 1 (SRP) applied');
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Patch 2: Missing closing brace (Node.js 22+ syntax)
|
||||
// ============================================================
|
||||
const syntaxOld = (
|
||||
' accept.authData = proof.authData.toString(16);\n' +
|
||||
' accept.sessionKey = proof.clientSessionKey;\n' +
|
||||
' } else if (accept.pluginName === Const.AUTH_PLUGIN_LEGACY) {'
|
||||
);
|
||||
|
||||
const syntaxNew = (
|
||||
' accept.authData = proof.authData.toString(16);\n' +
|
||||
' accept.sessionKey = proof.clientSessionKey;\n' +
|
||||
' } // fecha o else do if (!d || !d.buffer)\n' +
|
||||
' } else if (accept.pluginName === Const.AUTH_PLUGIN_LEGACY) {'
|
||||
);
|
||||
|
||||
if (content.includes(syntaxOld)) {
|
||||
content = content.replace(syntaxOld, syntaxNew);
|
||||
patched = true;
|
||||
console.log('[patch] Patch 2 (syntax Node22) applied');
|
||||
}
|
||||
|
||||
if (patched) {
|
||||
fs.writeFileSync(connPath, content, 'utf8');
|
||||
console.log('[patch] node-firebird patched successfully');
|
||||
} else {
|
||||
console.log('[patch] node-firebird already patched or not needed');
|
||||
}
|
||||
Reference in New Issue
Block a user