feat: link error command to session detail page

This commit is contained in:
wancat committed 2023-10-14 19:15:24 +08:00
1 parent 2257b4b809
commit ad08bde4c4
3 files changed
+30 -2

No files matched your search

@@ -22,6 +22,7 @@ export async function errorCommands() {
createdAt: createdAt?.toLocaleString(), createdAt: createdAt?.toLocaleString(),
user: user?.username, user: user?.username,
quest, quest,
session: session._id,
} }
}) })
} }
+27 -2
View File
@@ -1,4 +1,4 @@
import { Session } from '@linux-odyssey/models' import { Command, Session } from '@linux-odyssey/models'
export function sessionCount() { export function sessionCount() {
return Session.find().count() return Session.find().count()
@@ -51,8 +51,9 @@ export async function sessionList() {
}, },
]) ])
return sessions.map( return sessions.map(
({ user, quest, status, createdAt, finishedAt, commands }) => { ({ _id, user, quest, status, createdAt, finishedAt, commands }) => {
return { return {
_id,
user: user.username, user: user.username,
quest, quest,
status, 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,
}
}
@@ -6,6 +6,7 @@
<th>Command</th> <th>Command</th>
<th>User</th> <th>User</th>
<th>Quest</th> <th>Quest</th>
<th>Session</th>
<th>Error</th> <th>Error</th>
<th>Created At</th> <th>Created At</th>
</tr> </tr>
@@ -14,6 +15,7 @@
<td>{{command}}</td> <td>{{command}}</td>
<td>{{user}}</td> <td>{{user}}</td>
<td>{{quest}}</td> <td>{{quest}}</td>
<td><a href='/sessions/{{session}}'>Detail</a></td>
<td>{{error}}</td> <td>{{error}}</td>
<td>{{createdAt}}</td> <td>{{createdAt}}</td>
</tr> </tr>