fix: explicit store update in evaluateAnswer, remove mutation through reference
This commit is contained in:
parent
a02d3b3335
commit
c081e632cf
3 changed files with 17 additions and 3 deletions
|
|
@ -7,5 +7,6 @@ export interface GameSessionStore {
|
|||
ttlMs: number,
|
||||
): Promise<void>;
|
||||
get(sessionId: string): Promise<GameSessionData | null>;
|
||||
update(sessionId: string, data: GameSessionData): Promise<void>;
|
||||
delete(sessionId: string): Promise<void>;
|
||||
}
|
||||
|
|
@ -24,6 +24,13 @@ export class InMemoryGameSessionStore implements GameSessionStore {
|
|||
return Promise.resolve(entry.data);
|
||||
}
|
||||
|
||||
update(sessionId: string, data: GameSessionData): Promise<void> {
|
||||
const entry = this.sessions.get(sessionId);
|
||||
if (!entry) return Promise.resolve();
|
||||
this.sessions.set(sessionId, { data, expiresAt: entry.expiresAt });
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
delete(sessionId: string): Promise<void> {
|
||||
this.sessions.delete(sessionId);
|
||||
return Promise.resolve();
|
||||
|
|
|
|||
|
|
@ -96,10 +96,16 @@ export const evaluateAnswer = async (
|
|||
throw new NotFoundError(`Question not found: ${submission.questionId}`);
|
||||
}
|
||||
|
||||
session.answers.delete(submission.questionId);
|
||||
const updatedAnswers = new Map(session.answers);
|
||||
updatedAnswers.delete(submission.questionId);
|
||||
|
||||
if (session.answers.size === 0) {
|
||||
if (updatedAnswers.size === 0) {
|
||||
await store.delete(submission.sessionId);
|
||||
} else {
|
||||
await store.update(submission.sessionId, {
|
||||
answers: updatedAnswers,
|
||||
userId: session.userId,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue