db.js (view raw)
1const redis = require("redis");
2const config = require("./config.json");
3const clientRedis = redis.createClient(6379, config.server.redis);
4const _ = require("lodash");
5
6clientRedis.on("connect", function() {
7 console.log("Connected to redis");
8});
9
10const saveUserStop = (service, userId, stopCode) => {
11 clientRedis.hsetnx(`${service}:${userId}`, stopCode, 0);
12 clientRedis.hincrby(`${service}:${userId}`, stopCode, 1);
13 clientRedis.hsetnx(`stop:${stopCode}`, "number", 0);
14 clientRedis.hincrby(`stop:${stopCode}`, "number", 1);
15 clientRedis.hset(`stop:${stopCode}`, "last-time", Date.now());
16};
17
18const getUserStops = (service, userId) =>
19 new Promise((resolve, reject) => {
20 clientRedis.hgetall(`${service}:${userId}`, (err, user) => {
21 if (err) return reject(err);
22 const sortedStops = _.reverse(
23 _.sortBy(
24 _.map(user, (number, code) => ({ code, number: parseInt(number) })),
25 "number"
26 )
27 );
28 resolve(sortedStops);
29 });
30 });
31
32const getStopName = stopCode =>
33 new Promise((resolve, reject) => {
34 clientRedis.hget(
35 `stop:${stopCode}`,
36 "name",
37 (err, stopName) => (err ? reject(err) : resolve(stopName))
38 );
39 });
40
41const addRequest = type => {
42 const date = new Date().toLocaleDateString();
43 clientRedis.hsetnx(`request:${date}`, type, 0);
44 clientRedis.hincrby(`request:${date}`, type, 1);
45};
46
47module.exports = {
48 saveUserStop,
49 getUserStops,
50 getStopName,
51 addRequest,
52};