Commit 6224382333828cb479e6ad8fb463c0c877045806
1 parent
5986078357
Exists in
master
Messages counter
Showing 2 changed files with 20 additions and 0 deletions Inline Diff
lib/messages-archive.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | const redis = require('redis'); | ||
4 | |||
5 | const config = require('./config'); | ||
3 | const logger = require('komodo-sdk/logger'); | 6 | const logger = require('komodo-sdk/logger'); |
4 | const db = require('./db-mysql'); | 7 | const db = require('./db-mysql'); |
5 | 8 | ||
6 | const DIRECTION_INCOMING = 0; | 9 | const DIRECTION_INCOMING = 0; |
7 | const DIRECTION_OUTGOING = 1; | 10 | const DIRECTION_OUTGOING = 1; |
8 | 11 | ||
12 | const redisClient = config.redis && redis.createClient(config.redis); | ||
13 | |||
14 | function composeRedisCounterKeyword(origin, direction) { | ||
15 | const directionLabel = direction == DIRECTION_OUTGOING ? 'OUT' : 'IN'; | ||
16 | return `CALMA_MESSAGE_COUNTER_${origin}_${directionLabel}`; | ||
17 | } | ||
18 | |||
19 | function incrementCounter(origin, direction) { | ||
20 | redisClient && redisClient.INCR(composeRedisCounterKeyword(origin, direction), () => {}); | ||
21 | } | ||
22 | |||
9 | /** | 23 | /** |
10 | * Menyimpan pesan ke dalam archive histori pesan di database | 24 | * Menyimpan pesan ke dalam archive histori pesan di database |
11 | * | 25 | * |
12 | * @param {object} params - objek pesan yang akan disimpan | 26 | * @param {object} params - objek pesan yang akan disimpan |
13 | * @param {string} [params.origin_label] - label origin | 27 | * @param {string} [params.origin_label] - label origin |
14 | * @param {string} [params.origin=UNKNOWN] - digunakan sebagai label origin jika tdk ditentukan | 28 | * @param {string} [params.origin=UNKNOWN] - digunakan sebagai label origin jika tdk ditentukan |
15 | * @param {string} [params.origin_transport=UNKNOWN] - transport, misal SMS, TELEGRAM | 29 | * @param {string} [params.origin_transport=UNKNOWN] - transport, misal SMS, TELEGRAM |
16 | * @param {string} params.partner - pengirim / penerima | 30 | * @param {string} params.partner - pengirim / penerima |
17 | * @param {string} [params.msg] - isi pesan | 31 | * @param {string} [params.msg] - isi pesan |
18 | * @param {string} [params.message] - isi pesan, jika params.msg tidak terdefinisi | 32 | * @param {string} [params.message] - isi pesan, jika params.msg tidak terdefinisi |
19 | * @param {number} direction - 0: incoming, 1: outgoing | 33 | * @param {number} direction - 0: incoming, 1: outgoing |
20 | */ | 34 | */ |
21 | function insert(params, direction) { | 35 | function insert(params, direction) { |
36 | incrementCounter( | ||
37 | params.origin_label || params.origin, | ||
38 | params.direction | ||
39 | ); | ||
40 | |||
22 | if (!db.pool) return; | 41 | if (!db.pool) return; |
23 | 42 | ||
24 | const query = `INSERT INTO messages SET ?`; | 43 | const query = `INSERT INTO messages SET ?`; |
25 | const values = [{ | 44 | const values = [{ |
26 | origin_label: (params.origin_label || params.origin || 'UNKNOWN').trim(), | 45 | origin_label: (params.origin_label || params.origin || 'UNKNOWN').trim(), |
27 | origin_transport: (params.origin_transport || 'UNKNOWN').trim(), | 46 | origin_transport: (params.origin_transport || 'UNKNOWN').trim(), |
28 | direction, | 47 | direction, |
29 | partner: params.partner.trim(), | 48 | partner: params.partner.trim(), |
30 | message: (params.msg || params.message).trim(), | 49 | message: (params.msg || params.message).trim(), |
31 | }]; | 50 | }]; |
32 | 51 | ||
33 | db.pool.query(query, values, (err) => { | 52 | db.pool.query(query, values, (err) => { |
34 | if (err) { | 53 | if (err) { |
35 | logger.warn(`MESSAGES-ARCHIVE: DB ERROR on inserting message. ${err.toString()}`); | 54 | logger.warn(`MESSAGES-ARCHIVE: DB ERROR on inserting message. ${err.toString()}`); |
36 | } | 55 | } |
37 | }); | 56 | }); |
38 | } | 57 | } |
39 | 58 | ||
40 | exports.insert = insert; | 59 | exports.insert = insert; |
41 | exports.DIRECTION_INCOMING = DIRECTION_INCOMING; | 60 | exports.DIRECTION_INCOMING = DIRECTION_INCOMING; |
42 | exports.DIRECTION_OUTGOING = DIRECTION_OUTGOING; | 61 | exports.DIRECTION_OUTGOING = DIRECTION_OUTGOING; |
package.json
1 | { | 1 | { |
2 | "name": "komodo-center-messaging", | 2 | "name": "komodo-center-messaging", |
3 | "version": "0.9.16", | 3 | "version": "0.9.16", |
4 | "description": "Komodo Common Messaging Center", | 4 | "description": "Komodo Common Messaging Center", |
5 | "main": "index.js", | 5 | "main": "index.js", |
6 | "scripts": { | 6 | "scripts": { |
7 | "test": "mocha", | 7 | "test": "mocha", |
8 | "postversion": "git push && git push --tags" | 8 | "postversion": "git push && git push --tags" |
9 | }, | 9 | }, |
10 | "repository": { | 10 | "repository": { |
11 | "type": "git", | 11 | "type": "git", |
12 | "url": "git@gitlab.kodesumber.com:komodo/komodo-center-messaging.git" | 12 | "url": "git@gitlab.kodesumber.com:komodo/komodo-center-messaging.git" |
13 | }, | 13 | }, |
14 | "keywords": [ | 14 | "keywords": [ |
15 | "komodo", | 15 | "komodo", |
16 | "tektrans", | 16 | "tektrans", |
17 | "ppob" | 17 | "ppob" |
18 | ], | 18 | ], |
19 | "author": "Adhidarma Hadiwinoto <me@adhisimon.org>", | 19 | "author": "Adhidarma Hadiwinoto <me@adhisimon.org>", |
20 | "license": "ISC", | 20 | "license": "ISC", |
21 | "dependencies": { | 21 | "dependencies": { |
22 | "body-parser": "^1.19.0", | 22 | "body-parser": "^1.19.0", |
23 | "express": "^4.17.1", | 23 | "express": "^4.17.1", |
24 | "express-ipfilter": "^1.0.1", | 24 | "express-ipfilter": "^1.0.1", |
25 | "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git", | 25 | "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git", |
26 | "mysql": "^2.17.1", | 26 | "mysql": "^2.17.1", |
27 | "natural-compare-lite": "^1.4.0", | 27 | "natural-compare-lite": "^1.4.0", |
28 | "redis": "^2.8.0", | ||
28 | "request": "^2.88.0", | 29 | "request": "^2.88.0", |
29 | "yargs": "^13.2.4" | 30 | "yargs": "^13.2.4" |
30 | }, | 31 | }, |
31 | "devDependencies": { | 32 | "devDependencies": { |
32 | "eslint": "^5.16.0", | 33 | "eslint": "^5.16.0", |
33 | "should": "^13.2.3" | 34 | "should": "^13.2.3" |
34 | } | 35 | } |
35 | } | 36 | } |
36 | 37 |