From 2c78bd116108cbf6843d75fa2570fb457918df20 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Mon, 10 Aug 2026 14:20:42 +0200 Subject: graduation: support change deletion, coach assignment Also reset points after a level change. --- src/graduation-prod.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/graduation-prod.ts') diff --git a/src/graduation-prod.ts b/src/graduation-prod.ts index 2d4087f..f21aa5d 100644 --- a/src/graduation-prod.ts +++ b/src/graduation-prod.ts @@ -3,26 +3,32 @@ import { Graduation, GraduationChange } from "./graduation-common.ts"; import type { Student } from "./student-common.ts"; const _graduationChangesPromise = (async function () { + let universalChanges = new Map(); + let studentChanges = new Map(); + const db = await getGraduationDb(); - let changes = new Map(); + let entries = await db.fetchEntries(); for (const e of entries) { const gradChange = GraduationChange.fromDBEntry(e); + const changes = gradChange.studentId > 0 ? studentChanges : universalChanges; + if (!changes.has(gradChange.studentId)) { changes.set(gradChange.studentId, [gradChange]); } else { changes.get(gradChange.studentId).push(gradChange); } } - return changes; + return [studentChanges, universalChanges]; })(); const graduations: Map = new Map(); export async function fetchGraduation(student: Student): Promise { if (!graduations.has(student.id)) { - const studentChanges = (await _graduationChangesPromise).get(student.id) ?? []; - const graduation = Graduation.from(student, studentChanges); + const [studentChanges, universalChanges] = await _graduationChangesPromise; + const specificChanges = studentChanges.get(student.id) ?? []; + const graduation = Graduation.from(student, specificChanges.concat(universalChanges)); graduations.set(student.id, graduation); return graduation; } @@ -34,4 +40,5 @@ export { GraduationChange, Graduation, submitGraduationChange, + deleteGraduationChange, } from "./graduation-common.ts"; -- cgit v1.2.3