Yimaru-BackEnd/internal/repository/lms_user_progress_snapshot.go
Yared Yemane 52effaa321 Add admin endpoint for nested user LMS completion activity.
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>
2026-05-18 00:58:49 -07:00

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)
}