diff --git a/server/dist/index.js b/server/dist/index.js index 0b249f2..fe1564b 100644 --- a/server/dist/index.js +++ b/server/dist/index.js @@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config(); const axios = require('axios').default; const cheerio = require('cheerio'); +const semver = require('semver'); const express = require("express"); const bodyParser = require("body-parser"); const status = require("http-status"); @@ -113,11 +114,35 @@ class FE_Charts { limit: 1, order: [["Dttm_Last_Update", "DESC"]], }).then(results => { - version = results; + version = results[0].version; }).catch(err => FE_Charts.logError(err)); return version; }); } + static getAllData() { + return __awaiter(this, void 0, void 0, function* () { + const version = yield this.getCatalogueLastVersion(); + const characters = yield FE_Charts.getAllCharacters(); + const characterGrowthRates = yield FE_Charts.getAllCharactersGrowthRates(); + const classesGrowthRates = yield FE_Charts.getAllClassesGrowthRates(); + const classes = yield FE_Charts.getAllClasses(); + const genders = yield FE_Charts.getAllGenders(); + const houses = yield FE_Charts.getAllHouses(); + const restrictedClasses = yield FE_Charts.getAllRestrictedClasses(); + const stats = yield FE_Charts.getAllStats(); + return { + version: version, + characters: characters, + charGrowthRates: characterGrowthRates, + classGrowthRates: classesGrowthRates, + classes: classes, + genders: genders, + houses: houses, + restrictedClasses: restrictedClasses, + stats: stats, + }; + }); + } } exports.FE_Charts = FE_Charts; app.get('/', (req, res) => { @@ -129,24 +154,30 @@ app.get('/version', (req, res) => { }); }); app.get('/all', (req, res) => __awaiter(void 0, void 0, void 0, function* () { - const characters = yield FE_Charts.getAllCharacters(); - const characterGrowthRates = yield FE_Charts.getAllCharactersGrowthRates(); - const classesGrowthRates = yield FE_Charts.getAllClassesGrowthRates(); - const classes = yield FE_Charts.getAllClasses(); - const genders = yield FE_Charts.getAllGenders(); - const houses = yield FE_Charts.getAllHouses(); - const restrictedClasses = yield FE_Charts.getAllRestrictedClasses(); - const stats = yield FE_Charts.getAllStats(); - res.status(status.OK).send({ - characters: characters, - charGrowthRates: characterGrowthRates, - classGrowthRates: classesGrowthRates, - classes: classes, - genders: genders, - houses: houses, - restrictedClasses: restrictedClasses, - stats: stats, - }); + const data = yield FE_Charts.getAllData(); + res.status(status.OK).send(data); +})); +app.post('/update', (req, res) => __awaiter(void 0, void 0, void 0, function* () { + const clientVersion = req.body.version; + if (clientVersion) { + FE_Charts.getCatalogueLastVersion().then((version) => __awaiter(void 0, void 0, void 0, function* () { + try { + if (semver.gt(version, clientVersion)) { + const data = yield FE_Charts.getAllData(); + res.status(status.OK).send(data); + } + else { + res.status(status.OK).send(); // Catalogue up-to-date + } + } + catch (e) { + res.status(status.INTERNAL_SERVER_ERROR).send(e.message); + } + })); + } + else { + res.status(status.BAD_REQUEST).send("'version' parameter undefined"); + } })); // Don't start the server if we're importing some data if (process.argv.find(x => x == argImport) == undefined) { diff --git a/server/dist/index.js.map b/server/dist/index.js.map index 4001ada..fc5bff5 100644 --- a/server/dist/index.js.map +++ b/server/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/server/package.json b/server/package.json index 813a9dd..97f5fc8 100644 --- a/server/package.json +++ b/server/package.json @@ -33,6 +33,7 @@ "express": "^4.17.1", "http-status": "^1.4.1", "mysql2": "^2.0.1", + "semver": "^6.3.0", "sequelize": "^5.21.2" }, "devDependencies": { diff --git a/server/src/index.ts b/server/src/index.ts index 62dd9d8..afcec6c 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,6 +1,7 @@ require("dotenv").config(); const axios = require('axios').default; const cheerio = require('cheerio'); +const semver = require('semver'); import * as express from "express"; import * as bodyParser from "body-parser"; import * as status from "http-status"; @@ -9,7 +10,7 @@ const {Catalogue, Character, CharacterGrowthRate, ClassGrowthRate, FE_Class, Gen const app = express(); const port = process.env.NODE_PORT || 3000; -const argImport:string = "importing"; +const argImport: string = "importing"; app.use(bodyParser.urlencoded({extended: false})); app.use(bodyParser.json()); @@ -99,10 +100,34 @@ abstract class FE_Charts { limit: 1, order: [["Dttm_Last_Update", "DESC"]], }).then(results => { - version = results + version = results[0].version; }).catch(err => FE_Charts.logError(err)); return version; } + + static async getAllData() { + const version = await this.getCatalogueLastVersion(); + const characters = await FE_Charts.getAllCharacters(); + const characterGrowthRates = await FE_Charts.getAllCharactersGrowthRates(); + const classesGrowthRates = await FE_Charts.getAllClassesGrowthRates(); + const classes = await FE_Charts.getAllClasses(); + const genders = await FE_Charts.getAllGenders(); + const houses = await FE_Charts.getAllHouses(); + const restrictedClasses = await FE_Charts.getAllRestrictedClasses(); + const stats = await FE_Charts.getAllStats(); + + return { + version: version, + characters: characters, + charGrowthRates: characterGrowthRates, + classGrowthRates: classesGrowthRates, + classes: classes, + genders: genders, + houses: houses, + restrictedClasses: restrictedClasses, + stats: stats, + }; + } } app.get('/', (req, res) => { @@ -116,25 +141,29 @@ app.get('/version', (req, res) => { }); app.get('/all', async (req, res) => { - const characters = await FE_Charts.getAllCharacters(); - const characterGrowthRates = await FE_Charts.getAllCharactersGrowthRates(); - const classesGrowthRates = await FE_Charts.getAllClassesGrowthRates(); - const classes = await FE_Charts.getAllClasses(); - const genders = await FE_Charts.getAllGenders(); - const houses = await FE_Charts.getAllHouses(); - const restrictedClasses = await FE_Charts.getAllRestrictedClasses(); - const stats = await FE_Charts.getAllStats(); + const data = await FE_Charts.getAllData(); + res.status(status.OK).send(data); +}); - res.status(status.OK).send({ - characters: characters, - charGrowthRates: characterGrowthRates, - classGrowthRates: classesGrowthRates, - classes: classes, - genders: genders, - houses: houses, - restrictedClasses: restrictedClasses, - stats: stats, - }); +app.post('/update', async (req, res) => { + const clientVersion = req.body.version; + + if (clientVersion) { + FE_Charts.getCatalogueLastVersion().then(async (version) => { + try { + if (semver.gt(version, clientVersion)) { + const data = await FE_Charts.getAllData(); + res.status(status.OK).send(data); + } else { + res.status(status.OK).send(); // Catalogue up-to-date + } + } catch (e) { + res.status(status.INTERNAL_SERVER_ERROR).send(e.message); + } + }); + } else { + res.status(status.BAD_REQUEST).send("'version' parameter undefined"); + } }); // Don't start the server if we're importing some data