summaryrefslogtreecommitdiff
path: root/api.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-03-21 17:14:27 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2017-03-21 17:14:27 +0100
commitc64fa573715e86ba618c03477e31aa5f83ab4426 (patch)
treef22ae6eeca65b6f8392610f46cf6e82df7416be4 /api.js
parent7d77fe4df6618b77ec0aa2dac03a0b3c3a5b9d09 (diff)
downloadbridge-c64fa573715e86ba618c03477e31aa5f83ab4426.tar.gz
bridge-c64fa573715e86ba618c03477e31aa5f83ab4426.zip
do not insert duplicate grab jobs
Diffstat (limited to 'api.js')
-rw-r--r--api.js25
1 files changed, 19 insertions, 6 deletions
diff --git a/api.js b/api.js
index e36a774..c239a81 100644
--- a/api.js
+++ b/api.js
@@ -126,8 +126,11 @@ app.get("/api/player/:name", async (req, res) => {
}
/* request update job */
+ var jobid = -1;
+
// createdAt-start <= x <= createdAt-end
grab_start.setSeconds(grab_start.getSeconds() + 1);
+
payload = {
"region": player_region,
"params": {
@@ -137,16 +140,26 @@ app.get("/api/player/:name", async (req, res) => {
"filter[gameMode]": "casual,ranked"
}
};
- var jobq = await raw.query(`
- INSERT INTO jobs(type, payload, priority)
- VALUES('grab', $1, 0)
+
+ var job = await raw.query(`
+ UPDATE jobs SET priority=0
+ WHERE payload=$1 AND status<>'finished'
RETURNING id
`, [payload]);
+ if (job.rows.length == 0) {
+ job = await raw.query(`
+ INSERT INTO jobs(type, payload, priority)
+ VALUES('grab', $1, 0)
+ RETURNING id
+ `, [payload]);
+ // wake apigrabber up
+ await raw.query(`NOTIFY grab_open`, []);
+ console.log("player '" + name + "' new job requested");
+ }
+
console.log("player '" + name + "' updating after " + grab_start.toISOString());
- /* wake apigrabber up */
- await raw.query(`NOTIFY grab_open`, []);
- jobid = jobq.rows[0].id;
+ jobid = job.rows[0].id;
/* clean up */
raw.release();