diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-09-05 22:56:45 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-09-05 22:56:45 -0500 |
| commit | fea56ae09cd612003e1bafd2459556b67a5950e9 (patch) | |
| tree | a195fab20351891e6a65f68d77b88bf8c9671e75 /src/util/parser.ts | |
| parent | d0975a6e7ee57de4debda94e823011d813fbf4a1 (diff) | |
Add import/export functionality
Diffstat (limited to 'src/util/parser.ts')
| -rw-r--r-- | src/util/parser.ts | 48 |
1 files changed, 48 insertions, 0 deletions
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<number, Lab>(), + peerTeachers: new Map<number, PeerTeacher>() + } + + 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 |
