slight cache for analytics
This commit is contained in:
43
index.js
43
index.js
@ -189,22 +189,32 @@ app.post("/api/analytics/game", async (req, res) => {
|
||||
return;
|
||||
})
|
||||
|
||||
let analyticsCache = null;
|
||||
let analyticsCacheTime = 0;
|
||||
const ANALYTICS_TTL = 10 * 1000;
|
||||
|
||||
app.use("/api/analytics/get", async(req, res) => {
|
||||
const now = Date.now();
|
||||
if (analyticsCache && (now - analyticsCacheTime) < ANALYTICS_TTL) {
|
||||
res.send(analyticsCache);
|
||||
return;
|
||||
}
|
||||
const sql = `
|
||||
SELECT
|
||||
CASE
|
||||
WHEN game = 'nso_fix' THEN 'nso'
|
||||
SELECT
|
||||
CASE
|
||||
WHEN game = 'nso_fix' THEN 'nso'
|
||||
WHEN game = 'untitledgoosegamee' THEN 'untitledgoosegame' -- Fixes that typo too!
|
||||
ELSE game
|
||||
ELSE game
|
||||
END AS name,
|
||||
SUM(plays) as plays
|
||||
FROM stats
|
||||
FROM stats
|
||||
GROUP BY name
|
||||
ORDER BY plays DESC
|
||||
`;
|
||||
const query = top.prepare(sql);
|
||||
let data = query.all();
|
||||
res.send(data);
|
||||
analyticsCache = query.all();
|
||||
analyticsCacheTime = now;
|
||||
res.send(analyticsCache);
|
||||
return;
|
||||
});
|
||||
app.use("/metrics", async(req, res) => {
|
||||
@ -259,21 +269,6 @@ app.use("/api/music/download", async (req, res, next) => {
|
||||
}
|
||||
res.end();
|
||||
});
|
||||
app.post("/api/recat", async (req, res) => {
|
||||
if (isAdmin(req.cookies.token)) {
|
||||
let domain = JSON.parse(req.body)["domain"];
|
||||
let message;
|
||||
if (recatters.includes(domain)) {
|
||||
recatters.pop(domain);
|
||||
message = `Successfully set ${domain} to Selenite.`
|
||||
} else {
|
||||
recatters.push(domain);
|
||||
message = `Successfully set ${domain} as educational.`
|
||||
}
|
||||
fs.writeFile("./data/recats.json", JSON.stringify(recatters));
|
||||
res.send(message);
|
||||
};
|
||||
})
|
||||
|
||||
// friends endpoints
|
||||
app.get("/api/friends/list", async (req, res) => {
|
||||
@ -479,6 +474,6 @@ server.on("upgrade", (request, socket, head) => {
|
||||
app.use(async (req, res) => {
|
||||
res
|
||||
.type("text/html")
|
||||
.send(await fs.readFile(`./public/404.html`))
|
||||
.status(404);
|
||||
.status(404)
|
||||
.send(await fs.readFile(`./public/404.html`));
|
||||
});
|
||||
Reference in New Issue
Block a user