From c64043316eaa789679bb161599f7d665fb31560d Mon Sep 17 00:00:00 2001 From: wancat Date: Thu, 27 Jun 2024 11:54:28 +0800 Subject: [PATCH] feat: replace getOrCreateActive session to getActiveSession --- server/src/api/controllers/sessionController.ts | 13 ++++++++----- server/src/api/routes/sessionRouter.ts | 4 ++-- server/src/models/sessionManager.ts | 15 --------------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/server/src/api/controllers/sessionController.ts b/server/src/api/controllers/sessionController.ts index 6c4f348..85e48a9 100644 --- a/server/src/api/controllers/sessionController.ts +++ b/server/src/api/controllers/sessionController.ts @@ -3,7 +3,6 @@ import type { Express, Request, Response } from 'express' import { User, Session, ISession } from '@linux-odyssey/models' import { createNewSession, - getOrCreateActiveSession, isQuestUnlocked, } from '../../models/sessionManager.js' import { asyncHandler } from '../../middleware/error.js' @@ -36,6 +35,7 @@ export const getSessionList = asyncHandler( const { questId, status } = matchedData(req) const query = { user: user.id, quest: questId, status } const sessions = await Session.find(query) + console.log(query, sessions) res.json(sessions.map(sessionSummary)) } ) @@ -56,7 +56,6 @@ export const createSession = asyncHandler( export const getSessionById = asyncHandler( async (req: Request, res: Response) => { const { sessionId } = matchedData(req) - console.log(sessionId) const session = await Session.findOne({ _id: sessionId, user: (req.user as Express.ExistingUser).id, @@ -71,7 +70,7 @@ export const getSessionById = asyncHandler( } ) -export const getOrCreateSession = asyncHandler( +export const getActiveSessionControler = asyncHandler( async (req: Request, res: Response) => { const { questId } = matchedData(req) const user = await User.findById((req.user as Express.ExistingUser).id) @@ -79,8 +78,12 @@ export const getOrCreateSession = asyncHandler( user && ((await isQuestUnlocked(user, questId)) || config.testing.enabled) ) { - const session = await getOrCreateActiveSession(user, questId) - res.json(sessionDetail(session)) + const session = await Session.findOne({ + user: user.id, + quest: questId, + status: 'active', + }) + res.json(session ? sessionDetail(session) : null) } else { res.status(403).json({ message: 'Quest is locked.' }) } diff --git a/server/src/api/routes/sessionRouter.ts b/server/src/api/routes/sessionRouter.ts index 52e4e0c..bd61b80 100644 --- a/server/src/api/routes/sessionRouter.ts +++ b/server/src/api/routes/sessionRouter.ts @@ -17,10 +17,10 @@ router.post( sessionRateLimit, sessionController.createSession ) -router.post( +router.get( '/active', activeSessionValidator, - sessionController.getOrCreateSession + sessionController.getActiveSessionControler ) router.get( '/:sessionId', diff --git a/server/src/models/sessionManager.ts b/server/src/models/sessionManager.ts index d6bfa2f..798732c 100644 --- a/server/src/models/sessionManager.ts +++ b/server/src/models/sessionManager.ts @@ -79,21 +79,6 @@ export async function createNewSession( return session } -export async function getOrCreateActiveSession( - user: HydratedDocument, - questId: string -): Promise { - const session = await Session.findOne({ - user, - quest: questId, - status: 'active', - }) - if (session) { - return session - } - return createNewSession(user, questId) -} - export async function finishSession( session: HydratedDocument ): Promise {