CourseService

Serves authorization-scoped course data and owns the process-local course caches.

Callers pass a current AuthorizedCourseRequest before any student, points, or structure cache can be read. Course invalidation also rejects results from older in-flight loads.

Properties

Link copied to clipboard

Functions

Link copied to clipboard
Link copied to clipboard
open override fun close()
Link copied to clipboard
fun invalidate(courseId: Long)
Link copied to clipboard
fun invalidateStudentProgress(courseId: Long, studentIds: Collection<Long>)
Link copied to clipboard
suspend fun ownsExercise(request: AuthorizedCourseRequest, exerciseId: Long): Boolean
Link copied to clipboard
Link copied to clipboard
suspend fun requireExercise(request: AuthorizedCourseRequest, exerciseId: Long)
Link copied to clipboard
suspend fun searchStudents(request: AuthorizedCourseRequest, query: String, tag: String?, limit: Int): StudentsResponse
Link copied to clipboard
Link copied to clipboard
suspend fun student(request: AuthorizedCourseRequest, studentId: Long): StudentView?
Link copied to clipboard
suspend fun studentBest(request: AuthorizedCourseRequest, lang: String, studentId: String): StudentBestSnapshot
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
suspend fun weekFileUrls(request: AuthorizedCourseRequest, lang: String, studentId: String, weekId: Long): WeekFileUrls