messages-archive.js
2.25 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
'use strict';
const redis = require('redis');
const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const db = require('./db-mysql');
const DIRECTION_INCOMING = 0;
const DIRECTION_OUTGOING = 1;
const redisClient = config.redis && redis.createClient(config.redis);
if (!config.redis) {
logger.warn('Undefined config.redis, messages counter will not work! #05A778E21D7E');
}
if (!redisClient) {
logger.warn('Undefined redisClient, messages counter will not work! #1D3EC165E8D9');
}
function composeRedisCounterKeyword(origin, direction) {
const directionLabel = direction == DIRECTION_OUTGOING ? 'OUT' : 'IN';
return `CALMA_MESSAGE_COUNTER_${origin}_${directionLabel}`;
}
function incrementCounter(origin, direction) {
redisClient && 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(params, direction) {
incrementCounter(
params.origin_label || params.origin,
params.direction
);
if (!db.pool) 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, (err) => {
if (err) {
logger.warn(`MESSAGES-ARCHIVE: DB ERROR on inserting message. ${err.toString()}`);
}
});
}
exports.insert = insert;
exports.DIRECTION_INCOMING = DIRECTION_INCOMING;
exports.DIRECTION_OUTGOING = DIRECTION_OUTGOING;