From fea56ae09cd612003e1bafd2459556b67a5950e9 Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Sun, 5 Sep 2021 22:56:45 -0500 Subject: Add import/export functionality --- src/util/parser.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'src/util/parser.ts') diff --git a/src/util/parser.ts b/src/util/parser.ts index 6d706d7..2f1bdd4 100644 --- a/src/util/parser.ts +++ b/src/util/parser.ts @@ -24,6 +24,32 @@ interface LabSchedule { }[] }; +interface DatabaseFile { + labs: { + id: number, + course: number, + section: number, + event: { + days: string, + start: number, + end: number + }, + building: string, + room: string + }[], + peerTeachers: { + id: number, + firstname: string, + lastname: string, + events: { + days: string, + start: number, + end: number + }[], + labs: number[] + }[] +} + /** * Parses a peer teacher schedule * @param schedule The schedule to parse @@ -104,4 +130,26 @@ export function parseLabSchedule(schedule: LabSchedule) { } return results; +} + +/** + * Parses a database file into maps of Lab and PeerTeacher objects + * @param database The database object from a database file + * @returns And object with lab and peer teacher maps + */ +export function parseDatabase(database: DatabaseFile) { + const result = { + labs: new Map(), + peerTeachers: new Map() + } + + database.labs.forEach(lab => { + result.labs.set(lab.id, Lab.fromJSON(lab)); + }); + + database.peerTeachers.forEach(pt => { + result.peerTeachers.set(pt.id, PeerTeacher.fromJSON(pt)); + }); + + return result; } \ No newline at end of file -- cgit v1.2.3