diff --git a/packages/analytics/src/controllers/commands.js b/packages/analytics/src/controllers/commands.js new file mode 100644 index 0000000..4692652 --- /dev/null +++ b/packages/analytics/src/controllers/commands.js @@ -0,0 +1,9 @@ +import { errorCommands } from '../models/commands.js' + +// eslint-disable-next-line import/prefer-default-export +export async function commandListController(req, res) { + const payload = { + errorCommands: await errorCommands(), + } + res.render('commands', payload) +} diff --git a/packages/analytics/src/models/commands.js b/packages/analytics/src/models/commands.js new file mode 100644 index 0000000..2ea16de --- /dev/null +++ b/packages/analytics/src/models/commands.js @@ -0,0 +1,26 @@ +import { Command } from '@linux-odyssey/models' + +// eslint-disable-next-line import/prefer-default-export +export async function errorCommands() { + const commands = await Command.find({ error: { $ne: '' } }) + .populate({ + path: 'session', + populate: [ + { + path: 'user', + }, + { path: 'quest' }, + ], + }) + .exec() + return commands.map(({ command, error, createdAt, session }) => { + const { user, quest } = session + return { + command, + error, + createdAt: createdAt.toLocaleString(), + user: user.username, + quest: quest.id, + } + }) +} diff --git a/packages/analytics/src/router.js b/packages/analytics/src/router.js index 6e3b0ae..b6c9b98 100644 --- a/packages/analytics/src/router.js +++ b/packages/analytics/src/router.js @@ -2,10 +2,12 @@ import { Router } from 'express' import { homeController } from './controllers/index.js' import { userListController } from './controllers/users.js' +import { commandListController } from './controllers/commands.js' const router = Router() router.get('/', homeController) router.get('/users', userListController) +router.get('/commands', commandListController) export default router diff --git a/packages/analytics/views/commands.handlebars b/packages/analytics/views/commands.handlebars new file mode 100644 index 0000000..ed7078f --- /dev/null +++ b/packages/analytics/views/commands.handlebars @@ -0,0 +1,22 @@ +
| Command | +User | +Quest | +Error | +Created At | +
|---|---|---|---|---|
| {{command}} | +{{user}} | +{{quest}} | +{{error}} | +{{createdAt}} | +
This is the content of the homepage.