From a6846fd4563a546d235b7b95f4383bf37a4f5e09 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 9 Jun 2019 17:13:52 +1000 Subject: [PATCH] Incomplete King Of The Hill code --- server/badges.js | 16 +++++++++++++++- server/profiles.js | 5 ++--- server/utilities.js | 9 +++++++++ sql/create_database_structure.sql | 13 +++++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/server/badges.js b/server/badges.js index 39011a4..8f86a3c 100644 --- a/server/badges.js +++ b/server/badges.js @@ -7,7 +7,7 @@ let CronJob = require('cron').CronJob; //utilities let { log } = require('../common/utilities.js'); -let { logActivity, getBadgesStatistics, getBadgesOwned } = require('./utilities.js'); +let { logActivity, getBadgesStatistics, getBadgesOwned, getLadderData } = require('./utilities.js'); const listRequest = (connection) => (req, res) => { getBadgesStatistics((err, results) => { @@ -123,6 +123,20 @@ const runBadgeTicks = (connection) => { }); combatMasterBadgeTickJob.start(); +/* + //King Of The Hill + let kingOfTheHillBadgeTickJob = new CronJob('0 * * * * *', () => { + getLadderData(connection, 0, 1, (err, ladderResults) => { + if (err) throw err; + + //TODO: pull badge names into variables. Not good. + let query = 'SELECT * FROM badgesTimespan WHERE qualifyTime >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND name = "King Of The Hill";'; + connection.query(query, (err, results) => { + if (err) throw err; + }); + }); + }); +*/ } module.exports = { diff --git a/server/profiles.js b/server/profiles.js index 6676bff..b4d57b1 100644 --- a/server/profiles.js +++ b/server/profiles.js @@ -4,7 +4,7 @@ require('dotenv').config(); //libraries let CronJob = require('cron').CronJob; -let { getBadgesStatistics, getBadgesOwned, isAttacking, isSpying, logActivity } = require('./utilities.js'); +let { getBadgesStatistics, getBadgesOwned, isAttacking, isSpying, getLadderData, logActivity } = require('./utilities.js'); //utilities let { logDiagnostics } = require('./diagnostics.js'); @@ -430,8 +430,7 @@ const untrainRequest = (connection) => (req, res) => { }; const ladderRequest = (connection) => (req, res) => { - let query = 'SELECT accounts.id AS id, username, soldiers, recruits, gold FROM accounts JOIN profiles ON accounts.id = profiles.accountId ORDER BY soldiers DESC, recruits DESC, gold DESC LIMIT ?, ?;'; - connection.query(query, [req.body.start, req.body.length], (err, results) => { + getLadderData(connection, req.body.start, req.body.length, (err, results) => { if (err) throw err; getBadgesStatistics((err, { statistics }) => { diff --git a/server/utilities.js b/server/utilities.js index 0465a98..390bac4 100644 --- a/server/utilities.js +++ b/server/utilities.js @@ -109,6 +109,14 @@ const isSpying = (connection, user, cb) => { }); }; +const getLadderData = (connection, start, length, cb) => { + //moved here for reusability + let query = 'SELECT accounts.id AS id, username, soldiers, recruits, gold FROM accounts JOIN profiles ON accounts.id = profiles.accountId ORDER BY soldiers DESC, recruits DESC, gold DESC LIMIT ?, ?;'; + connection.query(query, [start, length], (err, results) => { + cb(err, results); + }); +}; + const logActivity = (connection, id) => { let query = 'UPDATE accounts SET lastActivityTime = CURRENT_TIMESTAMP() WHERE id = ?;'; connection.query(query, [id], (err) => { @@ -123,5 +131,6 @@ module.exports = { getBadgesOwned: getBadgesOwned, isAttacking: isAttacking, isSpying: isSpying, + getLadderData: getLadderData, logActivity: logActivity }; \ No newline at end of file diff --git a/sql/create_database_structure.sql b/sql/create_database_structure.sql index 067b569..a71b65d 100644 --- a/sql/create_database_structure.sql +++ b/sql/create_database_structure.sql @@ -191,5 +191,18 @@ CREATE TABLE IF NOT EXISTS badges ( name VARCHAR(50) NOT NULL, active BOOLEAN NOT NULL DEFAULT FALSE, + CONSTRAINT FOREIGN KEY fk_accountId(accountId) REFERENCES accounts(id) ON UPDATE CASCADE ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS badgesTimespan ( #for recording timespan-related badges + id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY UNIQUE, + td TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), + + accountId INTEGER UNSIGNED, + + name VARCHAR(50) NOT NULL, + + qualifyTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), + CONSTRAINT FOREIGN KEY fk_accountId(accountId) REFERENCES accounts(id) ON UPDATE CASCADE ON DELETE CASCADE ); \ No newline at end of file