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 = {
event: process.env.NODE_ENV === 'production' ? 'Event' : 'DevEvent',
person: process.env.NODE_ENV === 'production' ? 'Person' : 'DevPerson',
stats: process.env.NODE_ENV === 'production' ? 'Stats' : 'DevStats',
};
next();
});

View file

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

View file

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