feat: load responses and tasks from existing session

This commit is contained in:
Justin Lin committed 2025-04-23 16:17:10 +08:00
1 parent 2fcca0c4b9
commit b4b8f8baee
9 files changed
+52 -28

No files matched your search

@@ -1,4 +1,4 @@
import { Session as GameSession } from '@linux-odyssey/game'
import { GameSession } from '@linux-odyssey/game'
import { Command, Session } from '@linux-odyssey/models'
import { matchedData } from 'express-validator'
import type { Request, Response } from 'express'
+2
View File
@@ -2,6 +2,7 @@ import { router, publicProcedure } from '../trpc.js'
import { linkRouter } from './linkRouter.js'
import { questRouter } from './questRouter.js'
import { userRouter } from './userRouter.js'
import { sessionRouter } from './sessionRouter.js'
export const appRouter = router({
userList: publicProcedure.query(async (opts) => {
@@ -11,6 +12,7 @@ export const appRouter = router({
links: linkRouter,
quests: questRouter,
users: userRouter,
session: sessionRouter,
})
export type AppRouter = typeof appRouter
+13
View File
@@ -1,9 +1,11 @@
import { TRPCError } from '@trpc/server'
import { Session } from '@linux-odyssey/models'
import { GameSession, VoidFileExistenceChecker } from '@linux-odyssey/game'
import { z } from 'zod'
import { isQuestUnlocked } from '../models/sessionManager.js'
import config from '../config.js'
import { protectedProcedure, router } from '../trpc.js'
import { questManager } from '../models/quest.js'
export const sessionRouter = router({
getActiveSession: protectedProcedure
@@ -27,6 +29,15 @@ export const sessionRouter = router({
if (!session) {
return null
}
const quest = await questManager.get(questId)
if (!quest) {
return null
}
const gameSession = new GameSession(
session,
quest,
new VoidFileExistenceChecker()
)
return {
_id: session._id.toString(),
user: session.user,
@@ -35,6 +46,8 @@ export const sessionRouter = router({
createdAt: session.createdAt,
lastActivityAt: session.lastActivityAt,
completedEvents: session.completedEvents,
responses: gameSession.getResponses(),
tasks: gameSession.getTasks(),
}
}
throw new TRPCError({