import { COURSES } from './courses'; import { ELECTIVE_SETS } from './electiveSets'; import type { Course, Qualification } from './types'; // Courses indexed by set ID export const coursesBySet: Record = {}; for (const set of ELECTIVE_SETS) { coursesBySet[set.id] = set.courseIds.map( (cid) => COURSES.find((c) => c.id === cid)! ); } // Qualifications indexed by course ID export const qualificationsByCourse: Record = {}; for (const course of COURSES) { qualificationsByCourse[course.id] = course.qualifications; } // Course IDs indexed by specialization ID (with marker info) export const coursesBySpec: Record = {}; for (const course of COURSES) { for (const q of course.qualifications) { if (!coursesBySpec[q.specId]) { coursesBySpec[q.specId] = []; } coursesBySpec[q.specId].push({ courseId: course.id, marker: q.marker }); } } // Course lookup by ID export const courseById: Record = {}; for (const course of COURSES) { courseById[course.id] = course; } // Set ID lookup by course ID export const setIdByCourse: Record = {}; for (const course of COURSES) { setIdByCourse[course.id] = course.setId; } // Cancelled course IDs export const cancelledCourseIds = new Set( COURSES.filter((c) => c.cancelled).map((c) => c.id), ); // Course IDs indexed by course name (for detecting duplicates across sets) export const courseIdsByName: Record = {}; for (const course of COURSES) { if (course.cancelled) continue; (courseIdsByName[course.name] ??= []).push(course.id); }