list(query){ query = query || { }; let records = this._table.find(query); // convert loki objects to database-agnostic objects return Store._convertAll(records); }
// gets all user winnings in last active period getWinnings(userId){ let daysAgo = timeHelper.daysAgo(this.settings.values.winningCooldownDays); let winningsRaw = this._table.find({ '$and' : [ { ended : { '$gt' : daysAgo.getTime() } }, { status : 'closed' }, { winnerId : userId } ]}); if (winningsRaw.length === 0) return []; let winnings = Store._convertAll(winningsRaw); winnings.sort(function(a,b){ return a.ended < b.ended ? 1 : a.ended > b.ended ? -1 : 0; }); return winnings; }
// gets last winning in last active period for any game within the give price bracket range. // if two brackets overlap it rules in favor of enforcing a cooldown getComparableWinning(userId, gamePrice){ let daysAgo = timeHelper.daysAgo(this.settings.values.winningCooldownDays); // check if user won game in price range let bracket = bracketHelper.findBracketForPrice(gamePrice); if (!bracket) return null; let winningsRaw = this._table.find({ '$and' : [ { bracket : bracketHelper.toString(bracket) }, { ended : { '$gt' : daysAgo.getTime() } }, { status : 'closed' }, { winnerId : userId } ]}); if (winningsRaw.length === 0) return null; let winnings = Store._convertAll(winningsRaw); winnings.sort(function(a,b){ return a.ended < b.ended ? 1 : a.ended > b.ended ? -1 : 0; }); return winnings[0]; }