diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-21 17:14:27 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-21 17:14:27 +0100 |
| commit | c64fa573715e86ba618c03477e31aa5f83ab4426 (patch) | |
| tree | f22ae6eeca65b6f8392610f46cf6e82df7416be4 /api.js | |
| parent | 7d77fe4df6618b77ec0aa2dac03a0b3c3a5b9d09 (diff) | |
| download | bridge-c64fa573715e86ba618c03477e31aa5f83ab4426.tar.gz bridge-c64fa573715e86ba618c03477e31aa5f83ab4426.zip | |
do not insert duplicate grab jobs
Diffstat (limited to 'api.js')
| -rw-r--r-- | api.js | 25 |
1 files changed, 19 insertions, 6 deletions
@@ -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(); |
