UNPKG

ranvier-datasource-redis

Version:

datasource for ranvier

89 lines (80 loc) 2.04 kB
'use strict'; const redis = require('redis'); const { Logger } = require('ranvier'); class RedisDataSource { constructor() { this.db = redis.createClient({db:3}); this.db.on('error', err => { Logger.error(`Redis - Connect: ${err}`); }); this.db.on('ready', () => { Logger.log('Redis Connection'); }); } async hasData(config = {}) { await this.db.select(config.db); return new Promise((resolve, reject) => { this.db.dbsize((err, data) => { if (err) { Logger.error(`Redis - hasData: ${err}`); reject(err); return; } resolve(data > 0); }); }); } async fetchAll(config = {}) { await this.db.select(config.db); return new Promise((resolve, reject) => { this.db.keys('*', (err, data) => { if (err) { Logger.error(`Redis - fetchAll: ${err}`); reject(err) return; } resolve(data); }); }); } async fetch(config = {}, id) { await this.db.select(config.db); return new Promise((resolve, reject) => { this.db.get(id, (err, data) => { if (err) { Logger.error(`Redis - fetch: ${err}`); reject(err); return; } resolve(JSON.parse(data)); }); }); } async replace(config = {}, data) { await this.db.select(config.db); return new Promise((resolve, reject) => { this.db.del(data, (err, data) => { if (err) { Logger.error(`Redis - replace: ${err}`); reject(err); return; } resolve(data); }); }); } async update(config = {}, id, data) { await this.db.select(config.db); return new Promise((resolve, reject) => { this.db.set(id, JSON.stringify(data), (err, data) => { if (err) { Logger.error(`Redis - update: ${err}`); reject(err); return; } resolve(data); }); }); } } module.exports = { RedisDataSource };