fix: remove cache do configService; remove cacheService.js (nao usado)
- configService agora le direto do banco (sem TTL, sem stale data) - invalidarConfig virou no-op (não há cache para invalidar) - cacheService.js removido (so era usado pelo configService) - endpoint /metrics sem referencia ao cacheService
This commit is contained in:
@@ -1,56 +1,31 @@
|
||||
/**
|
||||
* Serviço de configuração da empresa com cache.
|
||||
* Serviço de configuração da empresa (sem cache).
|
||||
*
|
||||
* As flags CFE_* (triagem, saudação, CSAT, etc.) são lidas em toda operação
|
||||
* de chat/triagem/webhook. Este serviço armazena em cache (TTL 2min) e
|
||||
* invalida automaticamente quando as configurações são alteradas.
|
||||
* Lê direto do banco — sem TTL, sem stale data.
|
||||
* As flags CFE_* são consultadas a cada operação, então refletem
|
||||
* imediatamente qualquer alteração salva em Settings.
|
||||
*/
|
||||
|
||||
const db = require('../database');
|
||||
const cache = require('./cacheService');
|
||||
|
||||
const TTL = 2 * 60 * 1000; // 2 minutos
|
||||
|
||||
/**
|
||||
* Retorna a configuração completa de uma empresa (cacheada).
|
||||
* Invalidação: chamar invalidarConfig(alias, empresaId) após salvar settings.
|
||||
* Retorna a configuração completa de uma empresa (direto do banco).
|
||||
*
|
||||
* @param {string} alias
|
||||
* @param {number} empresaId
|
||||
* @returns {Promise<object>} Linha da tabela CHATC2_CONFIGURACOES_EMPRESA
|
||||
* @returns {Promise<object>}
|
||||
*/
|
||||
async function getConfig(alias, empresaId) {
|
||||
const key = 'cfg:' + alias + ':' + empresaId;
|
||||
const cached = cache.get(key);
|
||||
if (cached) return cached;
|
||||
|
||||
// Garante que o registro existe (insere se não existir)
|
||||
await garantirRegistro(alias, empresaId);
|
||||
|
||||
const result = await db.query(alias,
|
||||
'SELECT * FROM CHATC2_CONFIGURACOES_EMPRESA WHERE CFE_EMPRESA_ID = ?',
|
||||
[empresaId]);
|
||||
|
||||
const config = result[0] || {};
|
||||
cache.set(key, config, TTL);
|
||||
return config;
|
||||
return result[0] || {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Invalida o cache de configuração de uma empresa.
|
||||
* Deve ser chamado após salvar alterações nas configurações.
|
||||
*
|
||||
* @param {string} alias
|
||||
* @param {number} empresaId
|
||||
*/
|
||||
function invalidarConfig(alias, empresaId) {
|
||||
cache.del('cfg:' + alias + ':' + empresaId);
|
||||
}
|
||||
/** No-op: não há cache para invalidar */
|
||||
function invalidarConfig() {}
|
||||
|
||||
/**
|
||||
* Garante que existe um registro de configuração para a empresa.
|
||||
* Idempotente — se já existe, não faz nada.
|
||||
*/
|
||||
async function garantirRegistro(alias, empresaId) {
|
||||
try {
|
||||
const existe = await db.query(alias,
|
||||
@@ -63,7 +38,6 @@ async function garantirRegistro(alias, empresaId) {
|
||||
`, [empresaId]);
|
||||
}
|
||||
} catch (e) {
|
||||
// Tabela pode não existir ainda — ignora
|
||||
if (!e.message.includes('unknown') && !e.message.includes('não encontrado')) {
|
||||
console.error('[ConfigService] Erro ao garantir registro:', e.message.substring(0, 100));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user