Soften removal conditions in CRON tasks (no challenge removal at all)
authorBenjamin Auder <benjamin.auder@somewhere>
Wed, 12 Feb 2020 13:48:46 +0000 (14:48 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Wed, 12 Feb 2020 13:48:46 +0000 (14:48 +0100)
server/bin/www
server/models/Challenge.js
server/models/Game.js

index b3a2c73..9fd23a4 100755 (executable)
@@ -27,12 +27,10 @@ var server = http.createServer(app);
 
 var cron = require('node-cron');
 var UserModel = require("../models/User");
-var ChallengeModel = require("../models/Challenge");
 var GameModel = require("../models/Game");
 cron.schedule('0 0 0 * * *', function() {
-  // Remove some old users, challenges and games every 24h
+  // Remove unlogged users and unstarted games every 24h
   UserModel.cleanUsersDb();
-  ChallengeModel.removeOld();
   GameModel.cleanGamesDb();
 });
 
index 75cab3a..4aae427 100644 (file)
@@ -98,28 +98,6 @@ 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, 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);
-          }
-        });
-      });
-    });
-  },
 }
 
 module.exports = ChallengeModel;
index 16c050c..70f32be 100644 (file)
@@ -277,28 +277,21 @@ const GameModel =
     const day = 86400000;
     db.serialize(function() {
       let query =
-        "SELECT id,score,created " +
+        "SELECT id,created " +
         "FROM Games ";
       db.all(query, (err,games) => {
         games.forEach(g => {
           query =
-            "SELECT max(played) AS lastMaj " +
+            "SELECT count(*) as nbMoves, max(played) AS lastMaj " +
             "FROM Moves " +
             "WHERE gid = " + g.id;
-          db.get(query, (err2,updated) => {
-            if (!updated.lastMaj)
+          db.get(query, (err2,mstats) => {
+            // Remove games still not really started,
+            // with no action in the last 3 months:
+            if ((mstats.nbMoves == 0 && tsNow - g.created > 91*day) ||
+              (mstats.nbMoves == 1 && tsNow - mstats.lastMaj > 91*day))
             {
-              if (tsNow - g.created > 7*day)
-                return GameModel.remove(g.id);
-            }
-            else //at least one move
-            {
-              const lastMaj = updated.lastMaj;
-              if (g.score != "*" && tsNow - lastMaj > 7*day ||
-                g.score == "*" && tsNow - lastMaj > 91*day)
-              {
-                GameModel.remove(g.id);
-              }
+              return GameModel.remove(g.id);
             }
           });
         });