diff --git a/functions/src/subjects/Subject.service.ts b/functions/src/subjects/Subject.service.ts index b19af100..9a21cb19 100644 --- a/functions/src/subjects/Subject.service.ts +++ b/functions/src/subjects/Subject.service.ts @@ -1,11 +1,30 @@ -import { UVicCourseScraper } from '@vikelabs/uvic-course-scraper/dist'; +import { + KualiSubject, + UVicCourseScraper, +} from '@vikelabs/uvic-course-scraper/dist'; import { Term } from '../constants'; import { Subject } from './Subject.model'; export class SubjectsService { public static async getSubjects(term: Term): Promise { - const subjects = await UVicCourseScraper.getSubjects(term); - return subjects.map(({ subject, title }) => ({ + const subjects: KualiSubject[] = ( + await UVicCourseScraper.getCourses(term) + ).response.map((course) => { + return { + subject: course.subjectCode.name, + title: course.subjectCode.description, + }; + }); + + // remove duplicates based on two keys + + const m = new Map(); + subjects.forEach((subject) => { + m.set(`${subject.subject}-${subject.title}`, subject); + }); + + // map to array + return Array.from(m.values()).map(({ subject, title }) => ({ subject, // removes the subject within the title title: title.replace(`(${subject})`, '').trim(),