diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-08-10 14:20:42 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-08-10 14:20:42 +0200 |
| commit | 2c78bd116108cbf6843d75fa2570fb457918df20 (patch) | |
| tree | 72a9072335d2db41bc38a4ec6a08aa918db85283 /src/graduation-prod.ts | |
| parent | 44bbb1f70d9663fc5015561118fa922dac3aed76 (diff) | |
| download | bycs-sol-2c78bd116108cbf6843d75fa2570fb457918df20.tar.gz bycs-sol-2c78bd116108cbf6843d75fa2570fb457918df20.zip | |
graduation: support change deletion, coach assignment
Also reset points after a level change.
Diffstat (limited to 'src/graduation-prod.ts')
| -rw-r--r-- | src/graduation-prod.ts | 15 |
1 files changed, 11 insertions, 4 deletions
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<number, Graduation> = new Map(); export async function fetchGraduation(student: Student): Promise<Graduation> { 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"; |
