X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Fmodels%2FGame.js;h=017d195d2045c5f84a8878283cac2529fa355407;hb=77c5096644d83aaae8ab1dd42a5cde524507cf9d;hp=da59b4a6dbe6433e84beeceaa501b13fc12f0f0d;hpb=dac395887d96e2d642b209c6db6aaacc3ffacb34;p=vchess.git diff --git a/server/models/Game.js b/server/models/Game.js index da59b4a6..017d195d 100644 --- a/server/models/Game.js +++ b/server/models/Game.js @@ -11,7 +11,7 @@ const UserModel = require("./User"); * score: varchar (result) * scoreMsg: varchar ("Time", "Mutual agreement"...) * created: datetime - * drawOffer: boolean + * drawOffer: char ('w','b' or '' for none) * * Structure table Players: * gid: ref game id @@ -56,7 +56,7 @@ const GameModel = "INSERT INTO Games" + " (vid, fenStart, fen, score, timeControl, created, drawOffer)" + " VALUES (" + vid + ",'" + fen + "','" + fen + "','*','" - + timeControl + "'," + Date.now() + "," + false + ")"; + + timeControl + "'," + Date.now() + ",'')"; db.run(query, function(err) { if (!!err) return cb(err); @@ -131,9 +131,8 @@ const GameModel = getByUser: function(uid, excluded, cb) { db.serialize(function() { - // Next query is fine because a player appear at most once in a game const query = - "SELECT gid " + + "SELECT DISTINCT gid " + "FROM Players " + "WHERE uid " + (excluded ? "<>" : "=") + " " + uid; db.all(query, (err,gameIds) => { @@ -200,7 +199,9 @@ const GameModel = let modifs = ""; if (!!obj.message) modifs += "message = message || ' ' || '" + obj.message + "',"; - if ([true,false].includes(obj.drawOffer)) + // NOTE: if drawOffer is true, we should check that it's player's turn + // A bit overcomplicated. Let's trust the client on that for now... + if (!!obj.drawOffer) modifs += "drawOffer = " + obj.drawOffer + ","; if (!!obj.fen) modifs += "fen = '" + obj.fen + "',";