X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=models%2FProblem.js;fp=models%2FProblem.js;h=0c800901c4256014b546a9ee7e3e4af1ddf25f08;hb=8d7e2786f5a67a1b9a77c742d7951e0efbe8747d;hp=0000000000000000000000000000000000000000;hpb=7192f4711467ae73a0f813189f8a4d8cca252bf1;p=vchess.git diff --git a/models/Problem.js b/models/Problem.js new file mode 100644 index 00000000..0c800901 --- /dev/null +++ b/models/Problem.js @@ -0,0 +1,72 @@ +var db = require("../utils/database"); + +/* + * Structure: + * _id: problem number (int) + * uid: user id (int) + * vid: variant id (int) + * added: timestamp + * instructions: text + * solution: text + */ + +exports.create = function(vname, fen, instructions, solution) +{ + db.serialize(function() { + db.get("SELECT id FROM Variants WHERE name = '" + vname + "'", (err,variant) => { + db.run( + "INSERT INTO Problems (added, vid, fen, instructions, solution) VALUES " + + "(" + + Date.now() + "," + + variant._id + "," + + fen + "," + + instructions + "," + + solution + + ")"); + }); + }); +} + +exports.getById = function(id, callback) +{ + db.serialize(function() { + db.get( + "SELECT * FROM Problems " + + "WHERE id ='" + id + "'", + callback); + }); +} + +exports.fetchN = function(vname, directionStr, lastDt, MaxNbProblems, callback) +{ + db.serialize(function() { + db.all( + "SELECT * FROM Problems " + + "WHERE vid = (SELECT id FROM Variants WHERE name = '" + vname + "') " + + " AND added " + directionStr + " " + lastDt + " " + + "ORDER BY added " + (directionStr=="<" ? "DESC " : "") + + "LIMIT " + MaxNbProblems, + callback); + }); +} + +exports.update = function(id, uid, fen, instructions, solution) +{ + db.serialize(function() { + db.run( + "UPDATE Problems " + + "fen = " + fen + ", " + + "instructions = " + instructions + ", " + + "solution = " + solution + " " + + "WHERE id = " + id + " AND uid = " + uid); + }); +} + +exports.remove = function(id, uid) +{ + db.serialize(function() { + db.run( + "DELETE FROM Problems " + + "WHERE id = " + id + " AND uid = " + uid); + }); +}