Expose GET /api/v1/admin/users/:user_id/lms-learning-activity for progress.get_any_user so admins see program/course/module/lesson completions and practices from stored completion rows. Co-authored-by: Cursor <cursoragent@cursor.com>
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
dbgen "Yimaru-Backend/gen/db"
|
|
"Yimaru-Backend/internal/domain"
|
|
)
|
|
|
|
// GetLMSUserProgressSnapshot returns all completed lesson, module, course, and program IDs for a user.
|
|
func (s *Store) GetLMSUserProgressSnapshot(ctx context.Context, userID int64) (domain.LMSUserProgress, error) {
|
|
lessons, err := s.queries.ListLMSCompletedLessonIDsByUser(ctx, userID)
|
|
if err != nil {
|
|
return domain.LMSUserProgress{}, err
|
|
}
|
|
mods, err := s.queries.ListLMSCompletedModuleIDsByUser(ctx, userID)
|
|
if err != nil {
|
|
return domain.LMSUserProgress{}, err
|
|
}
|
|
courses, err := s.queries.ListLMSCompletedCourseIDsByUser(ctx, userID)
|
|
if err != nil {
|
|
return domain.LMSUserProgress{}, err
|
|
}
|
|
programs, err := s.queries.ListLMSCompletedProgramIDsByUser(ctx, userID)
|
|
if err != nil {
|
|
return domain.LMSUserProgress{}, err
|
|
}
|
|
return domain.LMSUserProgress{
|
|
LessonIDs: lessons,
|
|
ModuleIDs: mods,
|
|
CourseIDs: courses,
|
|
ProgramIDs: programs,
|
|
}, nil
|
|
}
|
|
|
|
// ListUserLMSFlatLearningActivity returns flattened LMS activity rows for admin reporting (lesson + practice completions).
|
|
func (s *Store) ListUserLMSFlatLearningActivity(ctx context.Context, userID int64) ([]dbgen.ListUserLMSFlatLearningActivityByUserRow, error) {
|
|
return s.queries.ListUserLMSFlatLearningActivityByUser(ctx, userID)
|
|
}
|