X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=server%2Fmodels%2FGame.js;h=0ac822e85e28a71ea4330a538f8db1bf0bf20318;hp=67550779581402032c6fb1015473ddbd577936a6;hb=3837d4f7885a3c3cdb468da2f3fa3fa1e5a1415a;hpb=c547fbfbf65659b98f4f1bfba4718c685ec281f8 diff --git a/server/models/Game.js b/server/models/Game.js index 67550779..0ac822e8 100644 --- a/server/models/Game.js +++ b/server/models/Game.js @@ -18,9 +18,15 @@ var db = require("../utils/database"); * Structure table Moves: * gid: ref game id * squares: varchar (description) - * message: text * played: datetime * idx: integer + * + * Structure table Chats: + * gid: game id (int) + * msg: varchar + * name: varchar + * sid: varchar (socket ID when sending message) + * added: datetime */ const GameModel = @@ -73,20 +79,29 @@ const GameModel = if (!!err2) return cb(err2); query = - "SELECT squares, message, played, idx " + + "SELECT squares, played, idx " + "FROM Moves " + "WHERE gid = " + id; db.all(query, (err3,moves) => { if (!!err3) return cb(err3); - const game = Object.assign({}, - gameInfo, - { - players: players, - moves: moves - } - ); - return cb(null, game); + query = + "SELECT msg, name, sid, added " + + "FROM Chats " + + "WHERE gid = " + id; + db.all(query, (err4,chats) => { + if (!!err4) + return cb(err4); + const game = Object.assign({}, + gameInfo, + { + players: players, + moves: moves, + chats: chats, + } + ); + return cb(null, game); + }); }); }); }); @@ -134,24 +149,28 @@ const GameModel = }); }, - // obj can have fields move, message, fen, drawOffer and/or score + // obj can have fields move, chat, fen, drawOffer and/or score update: function(id, obj) { db.parallelize(function() { let query = "UPDATE Games " + "SET "; + let modifs = ""; if (!!obj.message) - query += "message = message || ' ' || '" + obj.message + "',"; + modifs += "message = message || ' ' || '" + obj.message + "',"; if (!!obj.drawOffer) - query += "drawOffer = " + obj.drawOffer + ","; + modifs += "drawOffer = " + obj.drawOffer + ","; if (!!obj.fen) - query += "fen = '" + obj.fen + "',"; + modifs += "fen = '" + obj.fen + "',"; if (!!obj.score) - query += "score = '" + obj.score + "',"; - query = query.slice(0,-1); //remove last comma - query += " WHERE id = " + id; - db.run(query); + modifs += "score = '" + obj.score + "',"; + modifs = modifs.slice(0,-1); //remove last comma + if (modifs.length > 0) + { + query += modifs + " WHERE id = " + id; + db.run(query); + } if (!!obj.move) { const m = obj.move; @@ -161,6 +180,14 @@ const GameModel = + m.played + "," + m.idx + ")"; db.run(query); } + if (!!obj.chat) + { + query = + "INSERT INTO Chats (gid, msg, name, sid, added) VALUES " + + "(" + id + ",'" + obj.chat.msg + "','" + obj.chat.name + + "','" + obj.chat.sid + "'," + Date.now() + ")"; + db.run(query); + } }); }, @@ -179,6 +206,10 @@ const GameModel = "DELETE FROM Moves " + "WHERE gid = " + id; db.run(query); + query = + "DELETE FROM Chats " + + "WHERE gid = " + id; + db.run(query); }); },