Keeps the same response shape as STUDENT while skipping sequential locks; progress fields are still populated for completion UI. Co-authored-by: Cursor <cursoragent@cursor.com>
24 lines
1.1 KiB
Go
24 lines
1.1 KiB
Go
package domain
|
||
|
||
// LMSEntityAccess describes learner gating for a program, course, module, or lesson.
|
||
// Included for STUDENT and OPEN_LEARNER; omitted (nil) for staff roles in API responses.
|
||
// OPEN_LEARNER always has is_accessible true; STUDENT may be false when prerequisites are unmet.
|
||
// Progress fields count completed lessons vs total lessons in that entity’s scope (lesson: 0 or 1 of 1).
|
||
type LMSEntityAccess struct {
|
||
IsAccessible bool `json:"is_accessible"`
|
||
IsCompleted bool `json:"is_completed"`
|
||
Reason string `json:"reason,omitempty"`
|
||
CompletedCount int `json:"completed_count"`
|
||
TotalCount int `json:"total_count"`
|
||
ProgressPercent int `json:"progress_percent"`
|
||
}
|
||
|
||
// LMSUserProgress lists entity IDs the authenticated user has fully completed
|
||
// (lessons as marked complete; module/course/program when rollup conditions were met).
|
||
type LMSUserProgress struct {
|
||
LessonIDs []int64 `json:"lesson_ids"`
|
||
ModuleIDs []int64 `json:"module_ids"`
|
||
CourseIDs []int64 `json:"course_ids"`
|
||
ProgramIDs []int64 `json:"program_ids"`
|
||
}
|