summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-10-12 21:01:47 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-10-12 21:01:47 +0200
commit5103aeb5ec2ec9961a41af8d4afcf6b08da05ef4 (patch)
tree3702188af11b4bee99de4729e0bf42faa3f9bd38
parentefe56c43a69235aca281dc2fca03d87b562243e0 (diff)
downloadbridge-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.js11
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);
}