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);
final semesterRow = await (_database.select(
_database.semesters,
)..where((s) => s.id.equals(semester.id))).getSingle();
return fetchWithTtl(
cached: cached.isEmpty ? null : cached,
getFetchedAt: (_) => semesterRow.courseTableFetchedAt,
fetchFromNetwork: () => _fetchCourseTableFromNetwork(user, semester),
refresh: refresh,
);
}