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,
|
ttlMs: number,
|
||||||
): Promise<void>;
|
): Promise<void>;
|
||||||
get(sessionId: string): Promise<GameSessionData | null>;
|
get(sessionId: string): Promise<GameSessionData | null>;
|
||||||
|
update(sessionId: string, data: GameSessionData): Promise<void>;
|
||||||
delete(sessionId: string): Promise<void>;
|
delete(sessionId: string): Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +24,13 @@ export class InMemoryGameSessionStore implements GameSessionStore {
|
||||||
return Promise.resolve(entry.data);
|
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> {
|
delete(sessionId: string): Promise<void> {
|
||||||
this.sessions.delete(sessionId);
|
this.sessions.delete(sessionId);
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
|
|
|
||||||
|
|
@ -96,10 +96,16 @@ export const evaluateAnswer = async (
|
||||||
throw new NotFoundError(`Question not found: ${submission.questionId}`);
|
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);
|
await store.delete(submission.sessionId);
|
||||||
|
} else {
|
||||||
|
await store.update(submission.sessionId, {
|
||||||
|
answers: updatedAnswers,
|
||||||
|
userId: session.userId,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue