1 const db
= require("../utils/database");
8 * vid: variant id (int)
9 * fen: varchar (optional)
14 const ProblemModel
= {
15 checkProblem: function(p
) {
17 p
.id
.toString().match(/^[0-9]+$/) &&
18 p
.vid
.toString().match(/^[0-9]+$/) &&
19 p
.fen
.match(/^[a-zA-Z0-9, /-]*$/)
23 create: function(p
, cb
) {
24 db
.serialize(function() {
26 "INSERT INTO Problems " +
27 "(added, uid, vid, fen, instruction, solution) " +
29 "(" + Date
.now() + "," + p
.uid
+ "," + p
.vid
+ ",'" + p
.fen
+ "',?,?)";
30 db
.run(query
, [p
.instruction
,p
.solution
], function(err
) {
31 cb(err
, { id: this.lastID
});
36 getAll: function(cb
) {
37 db
.serialize(function() {
41 db
.all(query
, (err
,problems
) => {
47 getOne: function(id
, cb
) {
48 db
.serialize(function() {
53 db
.get(query
, (err
,problem
) => {
59 safeUpdate: function(prob
, uid
) {
60 db
.serialize(function() {
64 "vid = " + prob
.vid
+ "," +
65 "fen = '" + prob
.fen
+ "'," +
68 "WHERE id = " + prob
.id
+ " AND uid = " + uid
;
69 db
.run(query
, [prob
.instruction
,prob
.solution
]);
73 safeRemove: function(id
, uid
) {
74 db
.serialize(function() {
76 "DELETE FROM Problems " +
77 "WHERE id = " + id
+ " AND uid = " + uid
;
83 module
.exports
= ProblemModel
;