Commit cb55eb268e00465115d69aaff61ce97b2cdb6fab

Authored by Adhidarma Hadiwinoto
1 parent 0ae77a92f0
Exists in master

lru-cache untuk reverseUrlCache

Showing 2 changed files with 19 additions and 1 deletions Side-by-side Diff

1 1 var oracledb = require('oracledb');
  2 +var LRU = require('lru-cache');
2 3  
3 4 var config = require("./config.json");
4 5 var logger = console;
5 6  
6 7 var oraCon;
7 8  
  9 +var reverseUrlCache = LRU({max: 30, maxAge: 60 * 1000});
  10 +
8 11 function init(options) {
9 12 if (options && options.logger) {
10 13 logger = options.logger;
... ... @@ -37,7 +40,7 @@ function getTransactionIdFromMessage(message) {
37 40 }
38 41 }
39 42  
40   -function getReverseUrl(msisdn, callback) {
  43 +function getReverseUrlFromDb(msisdn, callback) {
41 44 oraCon.execute(
42 45 "SELECT trim(A.MSISDN) MSISDN, trim(B.REVERSE_URL) REVERSE_URL FROM T_STORE_USER_MSISDN A, T_STORE_USER B WHERE A.STORE_ID = B.STORE_ID AND A.USER_NAME = B.USER_NAME AND B.REVERSE_URL IS NOT NULL AND A.MSISDN = :msisdn",
43 46 [msisdn],
... ... @@ -55,11 +58,25 @@ function getReverseUrl(msisdn, callback) {
55 58 retval.push(result.rows[i][1]);
56 59 }
57 60  
  61 + if (retval.length) {
  62 + reverseUrlCache.set(msisdn, retval);
  63 + }
  64 +
58 65 callback(null, retval);
59 66 }
60 67 );
61 68 }
62 69  
  70 +function getReverseUrl(msisdn, callback) {
  71 + var urls = reverseUrlCache.get(msisdn);
  72 +
  73 + if (!urls) {
  74 + getReverseUrlFromDb(msisdn, callback);
  75 + } else {
  76 + callback(null, retval);
  77 + }
  78 +}
  79 +
63 80 function getRequestIdFromResponseMessage(message) {
64 81 try {
65 82 var tokens = message.split('.');
... ... @@ -21,6 +21,7 @@
21 21 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>",
22 22 "license": "ISC",
23 23 "dependencies": {
  24 + "lru-cache": "^4.0.1",
24 25 "oracledb": "^1.9.3",
25 26 "request": "^2.72.0",
26 27 "strftime": "^0.9.2",