Implement cleaning methods (CRON tasks)
[vchess.git] / server / models / Challenge.js
index c747629..01de6b5 100644 (file)
@@ -34,7 +34,7 @@ const ChallengeModel =
           "vid, fen, timeControl) VALUES " +
         "(" + Date.now() + "," + c.uid + "," + (!!c.to ? c.to + "," : "") +
           c.vid + ",'" + c.fen + "','" + c.timeControl + "')";
-      db.run(query, err => {
+      db.run(query, function(err) {
         return cb(err, {cid: this.lastID});
       });
     });
@@ -92,6 +92,28 @@ const ChallengeModel =
       });
     });
   },
+
+  // Remove challenges older than 1 month, and 1to1 older than 2 days
+  removeOld: function()
+  {
+    const tsNow = Date.now();
+    // 86400000 = 24 hours in milliseconds
+    const day = 86400000;
+    db.serialize(function() {
+      const query =
+        "SELECT id, target " +
+        "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);
+          }
+        });
+      });
+    });
+  },
 }
 
 module.exports = ChallengeModel;