Extend DRAFT/PUBLISHED to programs, courses, modules, and exam-prep hierarchy entities with learner visibility gating and progress exclusion. Resolve question_type_definition_id in question responses for legacy system types and unlinked dynamic questions. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1.0 KiB
Go
32 lines
1.0 KiB
Go
package domain
|
|
|
|
import "strings"
|
|
|
|
// ContentPublishStatus controls learner visibility for LMS hierarchy entities (programs,
|
|
// courses, modules) and exam-prep hierarchy entities (catalog courses, units, unit modules,
|
|
// unit module lessons). Mirrors LessonPublishStatus / PracticePublishStatus.
|
|
type ContentPublishStatus string
|
|
|
|
const (
|
|
ContentPublishDraft ContentPublishStatus = "DRAFT"
|
|
ContentPublishPublished ContentPublishStatus = "PUBLISHED"
|
|
)
|
|
|
|
// ContentPublishStatusFromDB normalizes persisted values.
|
|
func ContentPublishStatusFromDB(raw string) ContentPublishStatus {
|
|
switch strings.TrimSpace(strings.ToUpper(raw)) {
|
|
case string(ContentPublishPublished):
|
|
return ContentPublishPublished
|
|
default:
|
|
return ContentPublishDraft
|
|
}
|
|
}
|
|
|
|
// ContentPublishStatusFromCreateInput resolves create body: omit → draft; explicit value validated separately.
|
|
func ContentPublishStatusFromCreateInput(raw *string) ContentPublishStatus {
|
|
if raw == nil || strings.TrimSpace(*raw) == "" {
|
|
return ContentPublishDraft
|
|
}
|
|
return ContentPublishStatusFromDB(*raw)
|
|
}
|