New stat retrieval and event store last visited date

This commit is contained in:
Ben Grant 2021-06-16 01:03:56 +10:00
parent f16b158c7f
commit 99989e66aa
3 changed files with 22 additions and 10 deletions

View file

@ -30,6 +30,7 @@ app.use((req, res, next) => {
req.types = { req.types = {
event: process.env.NODE_ENV === 'production' ? 'Event' : 'DevEvent', event: process.env.NODE_ENV === 'production' ? 'Event' : 'DevEvent',
person: process.env.NODE_ENV === 'production' ? 'Person' : 'DevPerson', person: process.env.NODE_ENV === 'production' ? 'Person' : 'DevPerson',
stats: process.env.NODE_ENV === 'production' ? 'Stats' : 'DevStats',
}; };
next(); next();
}); });

View file

@ -1,3 +1,5 @@
const dayjs = require('dayjs');
module.exports = async (req, res) => { module.exports = async (req, res) => {
const { eventId } = req.params; const { eventId } = req.params;
@ -9,6 +11,10 @@ module.exports = async (req, res) => {
id: eventId, id: eventId,
...event, ...event,
}); });
// Update last visited time
event.visited = dayjs().unix();
await req.datastore.upsert(event);
} else { } else {
res.sendStatus(404); res.sendStatus(404);
} }

View file

@ -4,19 +4,24 @@ module.exports = async (req, res) => {
let eventCount = null; let eventCount = null;
let personCount = null; let personCount = null;
try { try {
const eventQuery = req.datastore.createQuery(['__Stat_Kind__']).filter('kind_name', req.types.event); const eventResult = (await req.datastore.get(req.datastore.key([req.types.stats, 'eventCount'])))[0] || null;
const personQuery = req.datastore.createQuery(['__Stat_Kind__']).filter('kind_name', req.types.person); const personResult = (await req.datastore.get(req.datastore.key([req.types.stats, 'personCount'])))[0] || null;
if (eventResult) {
eventCount = eventResult.value;
}
if (personResult) {
personCount = personResult.value;
}
eventCount = (await req.datastore.runQuery(eventQuery))[0][0].count;
personCount = (await req.datastore.runQuery(personQuery))[0][0].count;
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
res.send({ res.send({
eventCount: eventCount || null, eventCount,
personCount: personCount || null, personCount,
version: package.version, version: package.version,
}); });
}; };