2025-09-03 21:40:04 -03:00
|
|
|
// src/data/database.js
|
|
|
|
|
// Configuração da conexão com o banco de dados PostgreSQL
|
|
|
|
|
const { Pool } = require('pg');
|
PERF: Reduz verbosidade de logs em nivel info no ciclo do cron
Rebaixa para debug uma serie de logs "heartbeat" que disparavam todo ciclo
(a cada 1 minuto) independente de qualquer mudanca real, competindo com os
logs de acao/erro que realmente importam: buscas por watermark, contagem
de tickets pendentes/monitorados, checagens de comentario ja sincronizado,
abertura de conexao GLPI/PostgreSQL, e o resumo de sincronizacao do SN
(que a margem de seguranca de 6h do watermark sempre retorna nao-vazio,
mesmo sem mudanca real de campo).
Corrige tambem um bug real encontrado em teste: no fluxo GLPI -> SN, todo
comentario historico de um ticket era sanitizado e checado contra a API do
SN a cada ciclo antes mesmo de verificar se ja tinha sido sincronizado
(ticket_updates.destiny_id). Em tickets com historico longo isso
significava dezenas de chamadas desnecessarias por minuto. Agora a
checagem local (barata) roda primeiro, e so sanitiza/consulta o SN quando
o comentario realmente ainda nao foi sincronizado.
Corrige tambem o log de configuracao do pool PostgreSQL, que imprimia
"[object Object]" por passar o objeto de config como mensagem em vez de
metadado.
LOG_LEVEL default muda de debug para info em .env.example e
.env.production, unica forma do rebaixamento acima ter efeito pratico.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 16:00:29 -03:00
|
|
|
const { logInfo, logError, logDebug } = require('../utils/logger');
|
2025-09-03 21:40:04 -03:00
|
|
|
|
2025-11-19 16:01:37 -03:00
|
|
|
const poolConfig = {
|
|
|
|
|
host: process.env.SNGLPI_DB_HOST ,
|
|
|
|
|
port: process.env.SNGLPI_DB_PORT || 5432,
|
|
|
|
|
database: process.env.SNGLPI_DB_NAME,
|
|
|
|
|
user: process.env.SNGLPI_DB_USER,
|
|
|
|
|
password: process.env.SNGLPI_DB_PASSWORD
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const pool = new Pool(poolConfig);
|
2025-09-03 21:40:04 -03:00
|
|
|
|
2025-11-19 16:01:37 -03:00
|
|
|
// Log da configuração do pool para depuração (sem a senha)
|
|
|
|
|
const sanitizedConfig = { ...poolConfig, password: '*****' };
|
PERF: Reduz verbosidade de logs em nivel info no ciclo do cron
Rebaixa para debug uma serie de logs "heartbeat" que disparavam todo ciclo
(a cada 1 minuto) independente de qualquer mudanca real, competindo com os
logs de acao/erro que realmente importam: buscas por watermark, contagem
de tickets pendentes/monitorados, checagens de comentario ja sincronizado,
abertura de conexao GLPI/PostgreSQL, e o resumo de sincronizacao do SN
(que a margem de seguranca de 6h do watermark sempre retorna nao-vazio,
mesmo sem mudanca real de campo).
Corrige tambem um bug real encontrado em teste: no fluxo GLPI -> SN, todo
comentario historico de um ticket era sanitizado e checado contra a API do
SN a cada ciclo antes mesmo de verificar se ja tinha sido sincronizado
(ticket_updates.destiny_id). Em tickets com historico longo isso
significava dezenas de chamadas desnecessarias por minuto. Agora a
checagem local (barata) roda primeiro, e so sanitiza/consulta o SN quando
o comentario realmente ainda nao foi sincronizado.
Corrige tambem o log de configuracao do pool PostgreSQL, que imprimia
"[object Object]" por passar o objeto de config como mensagem em vez de
metadado.
LOG_LEVEL default muda de debug para info em .env.example e
.env.production, unica forma do rebaixamento acima ter efeito pratico.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 16:00:29 -03:00
|
|
|
logInfo('Configuração do Pool PostgreSQL (Banco Intermediário)', sanitizedConfig);
|
2025-09-03 21:40:04 -03:00
|
|
|
|
|
|
|
|
// testa a conexao
|
|
|
|
|
pool.on('connect', () => {
|
PERF: Reduz verbosidade de logs em nivel info no ciclo do cron
Rebaixa para debug uma serie de logs "heartbeat" que disparavam todo ciclo
(a cada 1 minuto) independente de qualquer mudanca real, competindo com os
logs de acao/erro que realmente importam: buscas por watermark, contagem
de tickets pendentes/monitorados, checagens de comentario ja sincronizado,
abertura de conexao GLPI/PostgreSQL, e o resumo de sincronizacao do SN
(que a margem de seguranca de 6h do watermark sempre retorna nao-vazio,
mesmo sem mudanca real de campo).
Corrige tambem um bug real encontrado em teste: no fluxo GLPI -> SN, todo
comentario historico de um ticket era sanitizado e checado contra a API do
SN a cada ciclo antes mesmo de verificar se ja tinha sido sincronizado
(ticket_updates.destiny_id). Em tickets com historico longo isso
significava dezenas de chamadas desnecessarias por minuto. Agora a
checagem local (barata) roda primeiro, e so sanitiza/consulta o SN quando
o comentario realmente ainda nao foi sincronizado.
Corrige tambem o log de configuracao do pool PostgreSQL, que imprimia
"[object Object]" por passar o objeto de config como mensagem em vez de
metadado.
LOG_LEVEL default muda de debug para info em .env.example e
.env.production, unica forma do rebaixamento acima ter efeito pratico.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 16:00:29 -03:00
|
|
|
logDebug('Conectado ao PostgreSQL');
|
2025-09-03 21:40:04 -03:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
pool.on('error', (err) => {
|
2025-11-19 16:01:37 -03:00
|
|
|
logError('Erro de conexão PostgreSQL:', err);
|
2025-09-03 21:40:04 -03:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//exporta o pool para ser usado em outros arquivos
|
|
|
|
|
module.exports = pool;
|