diff options
Diffstat (limited to 'src/group.ts')
| -rw-r--r-- | src/group.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/group.ts b/src/group.ts new file mode 100644 index 0000000..e840ffd --- /dev/null +++ b/src/group.ts @@ -0,0 +1,45 @@ +import type { Student } from "./student-common.ts"; + +/** + * Class to represent a Group of Students. + */ +class Group { + name: string; + students: Array<Student> = []; + + constructor(name: string, students?: Array<Student>) { + this.name = name; + if (typeof students !== "undefined") { + this.students = students; + } + } + + setStudents(students: Array<Student>) { + this.students = students; + } + + addStudent(student: Student) { + this.students.push(student); + } + + async getStudents() { + return this.students; + } +} + +const groups = new Map(); + +function buildGroups(students: Array<Student>) { + for (const student of students) { + let group = groups.get(student.group); + + if (!group) { + group = new Group(student.group); + groups.set(student.group, group); + } + + group.addStudent(student); + } +} + +export { Group, buildGroups, groups as _groups }; |
