diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-10-12 21:01:47 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-10-12 21:01:47 +0200 |
| commit | 5103aeb5ec2ec9961a41af8d4afcf6b08da05ef4 (patch) | |
| tree | 3702188af11b4bee99de4729e0bf42faa3f9bd38 | |
| parent | efe56c43a69235aca281dc2fca03d87b562243e0 (diff) | |
| download | bridge-release/2.18.0.tar.gz bridge-release/2.18.0.zip | |
optimize random player updatingrelease/2.19.0release/2.18.0
| -rw-r--r-- | service_grab.js | 11 |
1 files 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); } |
