Created diagnostic tools
This commit is contained in:
@@ -5,6 +5,7 @@ require('dotenv').config();
|
|||||||
let CronJob = require('cron').CronJob;
|
let CronJob = require('cron').CronJob;
|
||||||
|
|
||||||
//utilities
|
//utilities
|
||||||
|
let { logDiagnostics } = require('./diagnostics.js');
|
||||||
let { log } = require('../common/utilities.js');
|
let { log } = require('../common/utilities.js');
|
||||||
|
|
||||||
let { getStatistics, isAttacking } = require('./utilities.js');
|
let { getStatistics, isAttacking } = require('./utilities.js');
|
||||||
@@ -226,6 +227,7 @@ const runCombatTick = (connection) => {
|
|||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
|
|
||||||
log('Combat executed', pendingCombat.attackerId, pendingCombat.defenderId, victor, spoilsGold);
|
log('Combat executed', pendingCombat.attackerId, pendingCombat.defenderId, victor, spoilsGold);
|
||||||
|
logDiagnostics(connection, 'death', attackerCasualties);
|
||||||
|
|
||||||
//clean the database
|
//clean the database
|
||||||
let query = 'DELETE FROM equipment WHERE quantity <= 0;';
|
let query = 'DELETE FROM equipment WHERE quantity <= 0;';
|
||||||
|
|||||||
@@ -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
|
||||||
|
};
|
||||||
@@ -22,6 +22,10 @@ app.post('/newsrequest', news.newsRequest());
|
|||||||
let { connectToDatabase } = require('./database.js');
|
let { connectToDatabase } = require('./database.js');
|
||||||
let connection = connectToDatabase(); //uses .env
|
let connection = connectToDatabase(); //uses .env
|
||||||
|
|
||||||
|
//handle diagnostics
|
||||||
|
let diagnostics = require('./diagnostics.js');
|
||||||
|
diagnostics.runDailyDiagnostics(connection);
|
||||||
|
|
||||||
//handle accounts
|
//handle accounts
|
||||||
let accounts = require('./accounts.js');
|
let accounts = require('./accounts.js');
|
||||||
app.post('/signuprequest', accounts.signupRequest(connection));
|
app.post('/signuprequest', accounts.signupRequest(connection));
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ let CronJob = require('cron').CronJob;
|
|||||||
let { isAttacking } = require('./utilities.js');
|
let { isAttacking } = require('./utilities.js');
|
||||||
|
|
||||||
//utilities
|
//utilities
|
||||||
|
let { logDiagnostics } = require('./diagnostics.js');
|
||||||
let { log } = require('../common/utilities.js');
|
let { log } = require('../common/utilities.js');
|
||||||
|
|
||||||
//profile creation & requesting
|
//profile creation & requesting
|
||||||
@@ -152,6 +153,7 @@ const recruitRequest = (connection) => (req, res) => {
|
|||||||
res.end();
|
res.end();
|
||||||
|
|
||||||
log('Recruit successful', results[0].username, req.body.id, req.body.token);
|
log('Recruit successful', results[0].username, req.body.id, req.body.token);
|
||||||
|
logDiagnostics(connection, 'recruit', 1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
|
#diagnostic system
|
||||||
|
CREATE TABLE IF NOT EXISTS diagnostics (
|
||||||
|
id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY UNIQUE,
|
||||||
|
td TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
|
||||||
|
playerCount INTEGER NOT NULL DEFAULT 0,
|
||||||
|
totalGold INTEGER NOT NULL DEFAULT 0,
|
||||||
|
totalRecruitments INTEGER NOT NULL DEFAULT 0,
|
||||||
|
totalDeaths INTEGER NOT NULL DEFAULT 0,
|
||||||
|
totalCombats INTEGER NOT NULL DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS diagnosticsEvents (
|
||||||
|
id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY UNIQUE,
|
||||||
|
td TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
|
||||||
|
eventName VARCHAR(50),
|
||||||
|
quantity INTEGER NOT NULL DEFAULT 1
|
||||||
|
);
|
||||||
|
|
||||||
# account system
|
# account system
|
||||||
CREATE TABLE IF NOT EXISTS signups (
|
CREATE TABLE IF NOT EXISTS signups (
|
||||||
email VARCHAR(320) UNIQUE,
|
email VARCHAR(320) UNIQUE,
|
||||||
|
|||||||
Reference in New Issue
Block a user