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 = 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); 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";