UNPKG

@silverwind/ioredis-mock

Version:

This library emulates ioredis by performing all operations in-memory.

48 lines (36 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.zrangebyscore = zrangebyscore; var _lodash = require("lodash"); var _zrangeCommand = require("./zrange-command.common"); function zrangebyscore(key, inputMin, inputMax, ...args) { const map = this.data.get(key); if (!map) { return []; } if (this.data.has(key) && !(this.data.get(key) instanceof Map)) { return []; } const { withScores, limit, offset } = (0, _zrangeCommand.getWithScoresAndLimit)(args); const min = (0, _zrangeCommand.parseLimit)(inputMin); const max = (0, _zrangeCommand.parseLimit)(inputMax); const filteredArray = (0, _lodash.filter)(Array.from(map.values()), (0, _zrangeCommand.filterPredicate)(min, max)); let ordered = (0, _lodash.orderBy)(filteredArray, ['score', 'value']); if (withScores) { if (limit !== null) { ordered = (0, _zrangeCommand.offsetAndLimit)(ordered, offset, limit); } return (0, _lodash.flatMap)(ordered, it => [it.value, it.score]); } const results = ordered.map(it => it.value); if (limit !== null) { return (0, _zrangeCommand.offsetAndLimit)(results, offset, limit); } return results; }