diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-08-05 11:51:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-08-05 11:51:51 +0200 |
| commit | 582df8885a3573a728394b473b826616f8969316 (patch) | |
| tree | 9c21db03f4fbfd9956ee398e0d9194ebfa5b3234 /src/graduation-prod.ts | |
| parent | 46ac53e11b49a7f9cdb92c3559b05f41ce90122f (diff) | |
| download | bycs-sol-582df8885a3573a728394b473b826616f8969316.tar.gz bycs-sol-582df8885a3573a728394b473b826616f8969316.zip | |
convert a lot of js to typescript and use a single graduation DB
Diffstat (limited to 'src/graduation-prod.ts')
| -rw-r--r-- | src/graduation-prod.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/graduation-prod.ts b/src/graduation-prod.ts new file mode 100644 index 0000000..975fd0f --- /dev/null +++ b/src/graduation-prod.ts @@ -0,0 +1,43 @@ +import { getGraduationDb } from "./database-ENV.ts" +import { Graduation, GraduationChange } from "./graduation-common.ts"; +import type { Student } from "./student-common.ts"; + +const _graduationChangesPromise = async function() { + const db = await getGraduationDb(); + let changes = new Map(); + let entries = await db.fetchEntries(); + for (const e of entries) { + const gradChange = GraduationChange.fromDBEntry(e); + const studentChanges = changes.get(gradChange.studentId); + if (studentChanges === null) { + changes.set(gradChange.studentId, [gradChange]); + } else { + studentChanges.push(gradChange); + } + } + return changes; +}(); + +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); + graduations.set(student.id, graduation); + return graduation; + } + return graduations.get(student.id)!; +} + +export { + LEVEL_NAMES, + GraduationChange, + Graduation, + submitGraduationChange, + submitObservation, + + OBSERVATION_TYPES, + Observation, + ObservationPeriod, +} from "./graduation-common.ts"; |
