aboutsummaryrefslogtreecommitdiff
path: root/src/graduation-prod.ts
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-08-10 14:20:42 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-08-10 14:20:42 +0200
commit2c78bd116108cbf6843d75fa2570fb457918df20 (patch)
tree72a9072335d2db41bc38a4ec6a08aa918db85283 /src/graduation-prod.ts
parent44bbb1f70d9663fc5015561118fa922dac3aed76 (diff)
downloadbycs-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.ts15
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";