Skip to content
Snippets Groups Projects
Commit e3d18d2a authored by Martin Lehoux's avatar Martin Lehoux
Browse files

use crons for updating actionPoints

parent 2afeb117
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,8 @@ const { warn, error } = require('./utils/notifications'); ...@@ -17,6 +17,8 @@ const { warn, error } = require('./utils/notifications');
// Routes // Routes
const authRouter = require('./routes/auth'); const authRouter = require('./routes/auth');
const charactersRouter = require('./routes/characters'); const charactersRouter = require('./routes/characters');
// Crons
require('./utils/crons');
// Configuration // Configuration
const app = express(); const app = express();
......
const cron = require('node-cron');
const fs = require('fs');
const Character = require('../models/character');
const { maxActionPoints } = require('js-yaml').safeLoad(fs.readFileSync('./config.yml', 'utf8'));
if (!fs.existsSync('./data/lastActionPointsUpdate')) {
fs.writeFileSync('./data/lastActionPointsUpdate', new Date().toString());
console.log("Missing data file, generating...");
}
cron.schedule('*/3 * * * *', () => {
// Read last time
let lastUpdate = new Date(fs.readFileSync('./data/lastActionPointsUpdate').toString());
// Loop until now
while (lastUpdate.getTime() < new Date().getTime() - 3*1000) {
// Give a point
Character.where('actionPoints').lt(maxActionPoints)
.exec((err, characters) => {
characters.forEach(character => {
character.actionPoints ++;
character.save();
});
});
// Write lastime
lastUpdate = new Date(fs.readFileSync('./data/lastActionPointsUpdate').toString());
lastUpdate = new Date(lastUpdate.getTime() + 3*1000);
fs.writeFileSync('./data/lastActionPointsUpdate', lastUpdate.toString());
}
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment