From 5103aeb5ec2ec9961a41af8d4afcf6b08da05ef4 Mon Sep 17 00:00:00 2001 From: schneefux Date: Thu, 12 Oct 2017 21:01:47 +0200 Subject: optimize random player updating --- service_grab.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/service_grab.js b/service_grab.js index ffa3042..0c91d98 100644 --- a/service_grab.js +++ b/service_grab.js @@ -124,8 +124,15 @@ module.exports = class Analyzer extends Service { }, // update a random user "/api/player": async (req, res) => { - // TODO this becomes slow - let player = await this.getDatabase("regular").Player.findOne({ order: [ Seq.fn("RAND") ] }); + const db = this.getDatabase("regular"); + const maxPlayerId = (await db.Player.findOne({ + order: [ ["id", "DESC"] ] + })).id; + let player; + do { + const id = Math.floor(Math.random() * maxPlayerId); + player = await db.Player.findOne({ where: { id } }); + } while (player == undefined); this.updatePlayer(player, "regular"); res.json(player); } -- cgit v1.3.1