aboutsummaryrefslogtreecommitdiff
path: root/src/graduation-prod.ts
diff options
context:
space:
mode:
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";