package ports import ( "Yimaru-Backend/internal/domain" "context" ) // QuestionSetByID is implemented by the questions store. type QuestionSetByID interface { GetQuestionSetByID(ctx context.Context, id int64) (domain.QuestionSet, error) } // UserByID is implemented by the user store. type UserByID interface { GetUserByID(ctx context.Context, id int64) (domain.User, error) } type LmsPracticeStore interface { // courseID, moduleID, lessonID: exactly one non-nil, matching in.ParentKind / in.ParentID. CreateLmsPractice( ctx context.Context, in domain.CreatePracticeInput, courseID, moduleID, lessonID *int64, ) (domain.Practice, error) GetLmsPracticeByID(ctx context.Context, id int64) (domain.Practice, error) // TryGetLmsPracticeByQuestionSetID returns false when no LMS practice row references the question set. TryGetLmsPracticeByQuestionSetID(ctx context.Context, questionSetID int64) (domain.Practice, bool, error) ListLmsPracticesByCourseID(ctx context.Context, courseID int64, publishedOnly bool, limit, offset int32) ([]domain.Practice, int64, error) ListLmsPracticesByModuleID(ctx context.Context, moduleID int64, publishedOnly bool, limit, offset int32) ([]domain.Practice, int64, error) ListLmsPracticesByLessonID(ctx context.Context, lessonID int64, publishedOnly bool, limit, offset int32) ([]domain.Practice, int64, error) UpdateLmsPractice(ctx context.Context, id int64, input domain.UpdatePracticeInput) (domain.Practice, error) DeleteLmsPractice(ctx context.Context, id int64) error CountLmsPracticesByCourseID(ctx context.Context, courseID int64) (int64, error) CountLmsPracticesByModuleID(ctx context.Context, moduleID int64) (int64, error) CountLmsPracticesByLessonID(ctx context.Context, lessonID int64) (int64, error) }