Fix corr challenges
[vchess.git] / server / models / Challenge.js
index 01de6b5..fabeb7a 100644 (file)
@@ -1,4 +1,5 @@
 var db = require("../utils/database");
+const UserModel = require("./User");
 
 /*
  * Structure:
@@ -21,6 +22,8 @@ const ChallengeModel =
       return "Wrong characters in time control";
     if (!c.fen.match(/^[a-zA-Z0-9, /-]*$/))
       return "Bad FEN string";
+    if (!!c.to)
+      return UserModel.checkNameEmail({name: c.to});
     return "";
   },
 
@@ -53,14 +56,17 @@ const ChallengeModel =
     });
   },
 
-  // all challenges except where target is defined and not me
+  // All challenges except where target is defined and not me,
+  // and I'm not the sender.
   getByUser: function(uid, cb)
   {
     db.serialize(function() {
       const query =
         "SELECT * " +
         "FROM Challenges " +
-        "WHERE target IS NULL OR target = " + uid;
+        "WHERE target IS NULL" +
+          " OR uid = " + uid +
+          " OR target = " + uid;
       db.all(query, (err,challenges) => {
         return cb(err, challenges);
       });
@@ -101,14 +107,14 @@ const ChallengeModel =
     const day = 86400000;
     db.serialize(function() {
       const query =
-        "SELECT id, target " +
+        "SELECT id, target, added " +
         "FROM Challenges";
       db.all(query, (err, challenges) => {
         challenges.forEach(c => {
           if ((!c.target && tsNow - c.added > 30*day) ||
             (!!c.target && tsNow - c.added > 2*day))
           {
-            db.run("DELETE FROM CHallenges WHERE id = " + c.id);
+            db.run("DELETE FROM Challenges WHERE id = " + c.id);
           }
         });
       });