Some debug, all components enabled (but not finished: socket+AJAX missing)
[vchess.git] / models / Problem.js
CommitLineData
8d7e2786
BA
1var db = require("../utils/database");
2
3/*
4 * Structure:
c018b304 5 * id: problem number (int)
8d7e2786
BA
6 * uid: user id (int)
7 * vid: variant id (int)
8 * added: timestamp
9 * instructions: text
10 * solution: text
11 */
12
936dc463 13// TODO: callback ?
582df349 14exports.create = function(vid, fen, instructions, solution)
8d7e2786
BA
15{
16 db.serialize(function() {
936dc463 17 const query =
582df349
BA
18 "INSERT INTO Problems (added, vid, fen, instructions, solution) VALUES " +
19 "(" +
20 Date.now() + "," +
21 vid + "," +
22 fen + "," +
23 instructions + "," +
24 solution +
25 ")";
26 db.run(query);
8d7e2786
BA
27 });
28}
29
582df349 30exports.getOne = function(id, callback)
8d7e2786
BA
31{
32 db.serialize(function() {
936dc463
BA
33 const query =
34 "SELECT * " +
35 "FROM Problems " +
582df349 36 "WHERE id = " + id;
936dc463
BA
37 db.get(query, callback);
38 });
39}
40
582df349 41exports.fetchN = function(vid, uid, type, directionStr, lastDt, MaxNbProblems, callback)
936dc463
BA
42{
43 db.serialize(function() {
44 let typeLine = "";
45 if (uid > 0)
46 typeLine = "AND id " + (type=="others" ? "!=" : "=") + " " + uid;
47 const query =
8d7e2786 48 "SELECT * FROM Problems " +
582df349 49 "WHERE vid = " + vid +
936dc463 50 " AND added " + directionStr + " " + lastDt + " " + typeLine + " " +
8d7e2786 51 "ORDER BY added " + (directionStr=="<" ? "DESC " : "") +
fd08ab2c 52 "LIMIT " + MaxNbProblems;
936dc463 53 db.all(query, callback);
8d7e2786
BA
54 });
55}
56
57exports.update = function(id, uid, fen, instructions, solution)
58{
59 db.serialize(function() {
936dc463 60 const query =
8d7e2786
BA
61 "UPDATE Problems " +
62 "fen = " + fen + ", " +
63 "instructions = " + instructions + ", " +
64 "solution = " + solution + " " +
936dc463
BA
65 "WHERE id = " + id + " AND uid = " + uid;
66 db.run(query);
8d7e2786
BA
67 });
68}
69
70exports.remove = function(id, uid)
71{
72 db.serialize(function() {
936dc463 73 const query =
8d7e2786 74 "DELETE FROM Problems " +
936dc463
BA
75 "WHERE id = " + id + " AND uid = " + uid;
76 db.run(query);
8d7e2786
BA
77 });
78}