From ad08bde4c4c042b4b61c5047d866af8f8566d1b3 Mon Sep 17 00:00:00 2001 From: wancat Date: Sat, 14 Oct 2023 19:15:24 +0800 Subject: [PATCH] feat: link error command to session detail page --- packages/analytics/src/models/commands.js | 1 + packages/analytics/src/models/sessions.js | 29 ++++++++++++++++++-- packages/analytics/views/commands.handlebars | 2 ++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/analytics/src/models/commands.js b/packages/analytics/src/models/commands.js index 3abd2b0..48ece73 100644 --- a/packages/analytics/src/models/commands.js +++ b/packages/analytics/src/models/commands.js @@ -22,6 +22,7 @@ export async function errorCommands() { createdAt: createdAt?.toLocaleString(), user: user?.username, quest, + session: session._id, } }) } diff --git a/packages/analytics/src/models/sessions.js b/packages/analytics/src/models/sessions.js index 2278f52..e290a8b 100644 --- a/packages/analytics/src/models/sessions.js +++ b/packages/analytics/src/models/sessions.js @@ -1,4 +1,4 @@ -import { Session } from '@linux-odyssey/models' +import { Command, Session } from '@linux-odyssey/models' export function sessionCount() { return Session.find().count() @@ -51,8 +51,9 @@ export async function sessionList() { }, ]) return sessions.map( - ({ user, quest, status, createdAt, finishedAt, commands }) => { + ({ _id, user, quest, status, createdAt, finishedAt, commands }) => { return { + _id, user: user.username, quest, status, @@ -64,3 +65,27 @@ export async function sessionList() { } ) } + +export async function sessionDetail(id) { + const session = await Session.findById(id).populate('user').exec() + const commands = (await Command.find({ session: id })).map( + ({ command, pwd, output, error, createdAt }) => ({ + command: command?.slice(0, 20), + pwd, + output: output?.slice(0, 50), + error: error?.slice(0, 50), + createdAt: createdAt?.toLocaleString(), + }) + ) + const { _id, user, quest, status, createdAt, finishedAt } = session + return { + _id, + user: user.username, + quest, + status, + createdAt: createdAt?.toLocaleString(), + finishedAt: finishedAt?.toLocaleString(), + usedTime: finishedAt ? formatTime(finishedAt - createdAt) : '', + commands, + } +} diff --git a/packages/analytics/views/commands.handlebars b/packages/analytics/views/commands.handlebars index ed7078f..16f23c2 100644 --- a/packages/analytics/views/commands.handlebars +++ b/packages/analytics/views/commands.handlebars @@ -6,6 +6,7 @@ Command User Quest + Session Error Created At @@ -14,6 +15,7 @@ {{command}} {{user}} {{quest}} + Detail {{error}} {{createdAt}}