UNPKG

mwoffliner

Version:
64 lines 2.02 kB
export default class RedisQueue { redisClient; dbName; dehydratedKeys; hydratedKeys; constructor(redisClient, dbName, keyMapping) { this.redisClient = redisClient; this.dbName = dbName; if (keyMapping) { this.hydratedKeys = Object.values(keyMapping); this.dehydratedKeys = Object.keys(keyMapping); } } async pop() { const val = await this.redisClient.rPop(this.dbName); return this.hydrateObject(val); } push(val) { return this.redisClient.lPush(this.dbName, this.dehydrateObject(val)); } len() { return this.redisClient.hLen(this.dbName); } flush() { return this.redisClient.del(this.dbName); } hydrateObject(value) { if (!value) { return value; } const obj = JSON.parse(value); if (this.hydratedKeys && typeof obj === 'object') { const mappedVal = {}; for (const key of Object.keys(obj)) { const mapIndex = this.dehydratedKeys.indexOf(key); if (mapIndex !== -1) { mappedVal[this.hydratedKeys[mapIndex]] = obj[key]; } else { mappedVal[key] = obj[key]; } } return mappedVal; } return obj; } dehydrateObject(obj) { let mappedVal = obj; if (obj && this.dehydratedKeys && typeof obj === 'object') { mappedVal = {}; for (const key of Object.keys(obj)) { const mapIndex = this.hydratedKeys.indexOf(key); if (mapIndex !== -1) { mappedVal[this.dehydratedKeys[mapIndex]] = obj[key]; } else { mappedVal[key] = obj[key]; } } } return typeof mappedVal === 'string' ? mappedVal : JSON.stringify(mappedVal); } } //# sourceMappingURL=RedisQueue.js.map