messages-archive.js
2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const redis = require('redis');
const config = require('komodo-sdk/config');
const logger = require('tektrans-logger');
const db = require('./db-mysql');
const DIRECTION_INCOMING = 0;
const DIRECTION_OUTGOING = 1;
let redisClient;
if (!config.redis) {
logger.warn('Undefined config.redis, messages counter will not work! #05A778E21D7E');
} else {
redisClient = redis.createClient(config.redis);
}
if (!redisClient) {
logger.warn('Undefined redisClient, messages counter will not work! #1D3EC165E8D9');
}
function composeRedisCounterKeyword(origin, direction) {
const directionLabel = Number(direction) === DIRECTION_OUTGOING ? 'OUT' : 'IN';
return `CALMA_MESSAGE_COUNTER_${origin}_${directionLabel}`;
}
function incrementCounter(origin, direction) {
if (!redisClient) {
logger.warn('Undefined redisClient, not incrementing messages counter! #FF8E765E12E2');
} else {
redisClient.INCR(composeRedisCounterKeyword(origin, direction), () => {});
}
}
/**
* Menyimpan pesan ke dalam archive histori pesan di database
*
* @param {object} params - objek pesan yang akan disimpan
* @param {string} [params.origin_label] - label origin
* @param {string} [params.origin=UNKNOWN] - digunakan sebagai label origin jika tdk ditentukan
* @param {string} [params.origin_transport=UNKNOWN] - transport, misal SMS, TELEGRAM
* @param {string} params.partner - pengirim / penerima
* @param {string} [params.msg] - isi pesan
* @param {string} [params.message] - isi pesan, jika params.msg tidak terdefinisi
* @param {number} direction - 0: incoming, 1: outgoing
*/
function insert(xid, params, direction) {
incrementCounter(
params.origin_label || params.origin,
direction,
);
if (!db.pool) {
logger.warn('MESSAGE-ARCHIVE: DB POOL is not ready to insert message history', { xid });
return;
}
const query = 'INSERT INTO messages SET ?';
const values = [{
origin_label: (params.origin_label || params.origin || 'UNKNOWN').trim(),
origin_transport: (params.origin_transport || 'UNKNOWN').trim(),
direction,
partner: params.partner.trim(),
message: (params.msg || params.message).trim(),
}];
db.pool.query(query, values, async (err) => {
if (err) {
const fullQuery = await db.format(query, values);
logger.warn(`MESSAGES-ARCHIVE: DB ERROR on inserting message. ${err.toString()}`, { xid, query: fullQuery });
}
});
}
exports.insert = insert;
exports.DIRECTION_INCOMING = DIRECTION_INCOMING;
exports.DIRECTION_OUTGOING = DIRECTION_OUTGOING;