X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Fmodels%2FChallenge.js;h=a5fbf63e6e607dd70d87d4717031229909a1dccc;hb=f05815d7da84284bd9d7c1ce5b808acd675f2a3e;hp=de2818baac3d461356ba60e4b8357b719450b44f;hpb=77fd729819118d491ff91c1d99960add2ef9cff3;p=vchess.git diff --git a/server/models/Challenge.js b/server/models/Challenge.js index de2818ba..a5fbf63e 100644 --- a/server/models/Challenge.js +++ b/server/models/Challenge.js @@ -78,12 +78,15 @@ const ChallengeModel = db.get(query, (err,challengeInfo) => { if (!!err) return cb(err); + let condition = ""; + if (!!challengeInfo.to[0]) + condition = " AND u.name in (" + challengeInfo.to.join(",") + ")"; query = "SELECT w.uid AS id, u.name " + "FROM WillPlay w " + "JOIN Users u " + " ON w.uid = u.id " + - "WHERE w.cid = " + id; + "WHERE w.cid = " + id + condition; db.run(query, (err2,players) => { if (!!err2) return cb(err2); @@ -113,6 +116,7 @@ const ChallengeModel = db.run(query, (err,challIds) => { if (!!err) return cb(err); + challIds = challIds || []; let challenges = []; challIds.forEach(cidRow => { ChallengeModel.getOne(cidRow["cid"], (err2,chall) => { @@ -126,20 +130,61 @@ const ChallengeModel = }); }, + getSeatCount: function(id, cb) + { + db.serialize(function() { + let query = + "SELECT COUNT(*) AS scount " + + "FROM WillPlay " + + "WHERE cid = " + id; + db.get(query, (err,scRow) => { + if (!!err) + return cb(err); + query = + "SELECT nbPlayers " + + "FROM Challenges " + + "WHERE id = " + id; + db.get(query, (err2,chRow) => { + if (!!err2) + return cb(err2); + cb(chRow["nbPlayers"] - scRow["scount"]); + }); + }); + }); + }, + + setSeat: function(id, uid) + { + // TODO: remove extra "db.serialize" (parallelize by default) + //db.serialize(function() { + const query = + "INSERT OR REPLACE INTO WillPlay " + + "VALUES (true," + id + "," + uid +")"; + db.run(query); + //}); + }, + remove: function(id, uid) { db.serialize(function() { let query = - "DELETE FROM Challenges " + - "WHERE id = " + id + " AND uid = " + uid; - db.run(query, (err,ret) => { - if (!err && ret >= 1) + "SELECT 1 " + + "FROM Challenges " + + "WHERE id = " + id + " AND uid = " + uid; + db.run(query, (err,rows) => { + if (rows.length > 0) //it's my challenge { - // Also remove matching WillPlay entries if a challenge was deleted - query = - "DELETE FROM WillPlay " + - "WHERE cid = " + id; - db.run(query); + db.parallelize(function() { + query = + "DELETE FROM Challenges " + + "WHERE id = " + id; + db.run(query); + // Also remove matching WillPlay entries if a challenge was deleted + query = + "DELETE FROM WillPlay " + + "WHERE cid = " + id; + db.run(query); + }); } }); });