47 lines
2.3 KiB
Go
47 lines
2.3 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
// ExamPrepLesson is a video lesson under an exam-prep unit module (exam_prep.unit_module_lessons).
|
|
type ExamPrepLesson struct {
|
|
ID int64 `json:"id"`
|
|
UnitModuleID int64 `json:"unit_module_id"`
|
|
Title string `json:"title"`
|
|
VideoURL *string `json:"video_url,omitempty"`
|
|
Thumbnail *string `json:"thumbnail,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
SortOrder int `json:"sort_order"`
|
|
PublishStatus ContentPublishStatus `json:"publish_status"`
|
|
AccessTier ContentAccessTier `json:"access_tier"`
|
|
EffectiveAccessTier ContentAccessTier `json:"effective_access_tier,omitempty"`
|
|
HasPractice bool `json:"has_practice"`
|
|
Access *LMSEntityAccess `json:"access,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt *time.Time `json:"updated_at,omitempty"`
|
|
}
|
|
|
|
// VisibleToLearners is true when the lesson appears in student/learner exam-prep APIs.
|
|
func (l ExamPrepLesson) VisibleToLearners() bool {
|
|
return l.PublishStatus == ContentPublishPublished
|
|
}
|
|
|
|
type CreateExamPrepLessonInput struct {
|
|
Title string `json:"title" validate:"required"`
|
|
VideoURL *string `json:"video_url,omitempty"`
|
|
Thumbnail *string `json:"thumbnail,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
// Omit or empty defaults to DRAFT; set PUBLISHED to make visible to learners immediately.
|
|
PublishStatus *string `json:"publish_status,omitempty" validate:"omitempty,oneof=DRAFT draft PUBLISHED published"`
|
|
AccessTier *string `json:"access_tier,omitempty" validate:"omitempty,oneof=FREE free PREMIUM premium"`
|
|
}
|
|
|
|
type UpdateExamPrepLessonInput struct {
|
|
Title *string `json:"title,omitempty"`
|
|
VideoURL *string `json:"video_url,omitempty"`
|
|
Thumbnail *string `json:"thumbnail,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
SortOrder *int `json:"sort_order,omitempty"`
|
|
PublishStatus *string `json:"publish_status,omitempty" validate:"omitempty,oneof=DRAFT draft PUBLISHED published"`
|
|
AccessTier *string `json:"access_tier,omitempty" validate:"omitempty,oneof=FREE free PREMIUM premium"`
|
|
}
|