Yimaru-BackEnd/internal/domain/content_publish_status.go
Yared Yemane e56bea3abf feat: add hierarchy publish status and resolve question type definition IDs
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>
2026-06-10 02:40:16 -07:00

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