Created diagnostic tools

This commit is contained in:
2019-06-04 04:00:36 +10:00
parent 8a6fdbd1c7
commit d1c32e7259
5 changed files with 67 additions and 0 deletions
+2
View File
@@ -5,6 +5,7 @@ require('dotenv').config();
let CronJob = require('cron').CronJob;
//utilities
let { logDiagnostics } = require('./diagnostics.js');
let { log } = require('../common/utilities.js');
let { getStatistics, isAttacking } = require('./utilities.js');
@@ -226,6 +227,7 @@ const runCombatTick = (connection) => {
if (err) throw err;
log('Combat executed', pendingCombat.attackerId, pendingCombat.defenderId, victor, spoilsGold);
logDiagnostics(connection, 'death', attackerCasualties);
//clean the database
let query = 'DELETE FROM equipment WHERE quantity <= 0;';
+39
View File
@@ -0,0 +1,39 @@
//environment variables
require('dotenv').config();
//libraries
let CronJob = require('cron').CronJob;
//utilities
let { log } = require('../common/utilities.js');
const runDailyDiagnostics = (connection) => {
let dailyJob = new CronJob('0 0 * * * *', () => {
let query = 'INSERT INTO diagnostics (playerCount, totalGold, totalRecruitments, totalDeaths, totalCombats) VALUES ((SELECT COUNT(*) FROM profiles), (SELECT SUM(gold) FROM profiles), (IFNULL((SELECT SUM(quantity) FROM diagnosticsEvents WHERE eventName = "recruit"), 0)), (IFNULL((SELECT SUM(quantity) FROM diagnosticsEvents WHERE eventName = "death"), 0)), (SELECT COUNT(*) FROM pastCombat WHERE eventTime >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)));';
connection.query(query, (err) => {
if (err) throw err;
let query = 'DELETE FROM diagnosticsEvents;';
connection.query(query, (err) => {
if (err) throw err;
log('Daily diagnostics taken');
});
});
});
dailyJob.start();
};
//current name parameters: 'recruit', 'death'
const logDiagnostics = (connection, name, quantity) => {
let query = 'INSERT INTO diagnosticsEvents (eventName, quantity) VALUES (?, ?);';
connection.query(query, [name, quantity], (err) => {
if (err) throw err;
});
};
module.exports = {
runDailyDiagnostics: runDailyDiagnostics,
logDiagnostics: logDiagnostics
};
+4
View File
@@ -22,6 +22,10 @@ app.post('/newsrequest', news.newsRequest());
let { connectToDatabase } = require('./database.js');
let connection = connectToDatabase(); //uses .env
//handle diagnostics
let diagnostics = require('./diagnostics.js');
diagnostics.runDailyDiagnostics(connection);
//handle accounts
let accounts = require('./accounts.js');
app.post('/signuprequest', accounts.signupRequest(connection));
+2
View File
@@ -7,6 +7,7 @@ let CronJob = require('cron').CronJob;
let { isAttacking } = require('./utilities.js');
//utilities
let { logDiagnostics } = require('./diagnostics.js');
let { log } = require('../common/utilities.js');
//profile creation & requesting
@@ -152,6 +153,7 @@ const recruitRequest = (connection) => (req, res) => {
res.end();
log('Recruit successful', results[0].username, req.body.id, req.body.token);
logDiagnostics(connection, 'recruit', 1);
});
});
});