getCourseTable method
Gets the course schedule for a semester.
Returns cached data if fresh (within TTL). Set refresh to true to
bypass TTL (pull-to-refresh).
Use getCourseOffering for related data (teachers, classrooms, schedules).
Implementation
Future<CourseTableData> getCourseTable({
required User user,
required Semester semester,
bool refresh = false,
}) async {
final cached = await _buildCourseTableData(semester.id);
return fetchWithTtl(
cached: cached.isEmpty ? null : cached,
getFetchedAt: (_) => semester.courseTableFetchedAt,
fetchFromNetwork: () => _fetchCourseTableFromNetwork(user, semester),
refresh: refresh,
);
}