92 lines
1.8 KiB
Go
92 lines
1.8 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
type CourseCategory struct {
|
|
ID int64
|
|
Name string // "Learning English", "Other Courses"
|
|
IsActive bool
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type Course struct {
|
|
ID int64
|
|
CategoryID int64
|
|
Title string
|
|
Description string
|
|
IsActive bool
|
|
}
|
|
|
|
type Program struct {
|
|
ID int64
|
|
CourseID int64
|
|
Title string
|
|
Description string
|
|
Thumbnail string
|
|
Order int // ordering inside course
|
|
IsActive bool
|
|
}
|
|
|
|
type Level struct {
|
|
ID int64
|
|
ProgramID int64
|
|
Title string // "Beginner", "Level 1"
|
|
Description string
|
|
LevelIndex int // 1,2,3...
|
|
NumberOfModules int
|
|
NumberOfPractices int
|
|
NumberOfVideos int
|
|
IsActive bool
|
|
}
|
|
|
|
type Module struct {
|
|
ID int64
|
|
LevelID int64
|
|
Title string
|
|
Content string
|
|
Order int
|
|
IsActive bool
|
|
}
|
|
|
|
type ModuleVideo struct {
|
|
ID int64
|
|
ModuleID int64
|
|
Title string
|
|
Description string
|
|
VideoURL string
|
|
Duration int // seconds
|
|
Resolution string // "720p", "1080p"
|
|
PublishSettings PublishSettings
|
|
IsActive bool
|
|
InstructorId string
|
|
Thumbnail string
|
|
}
|
|
|
|
type PublishSettings struct {
|
|
IsPublished bool
|
|
PublishDate time.Time
|
|
Visibility string // "public", "private", "unlisted"
|
|
}
|
|
|
|
type Practice struct {
|
|
ID int64
|
|
OwnerType string // "LEVEL" | "MODULE"
|
|
OwnerID int64
|
|
Title string
|
|
Description string
|
|
BannerImage string
|
|
Persona string
|
|
IsActive bool
|
|
}
|
|
|
|
type PracticeQuestion struct {
|
|
ID int64
|
|
PracticeID int64
|
|
Question string
|
|
QuestionVoicePrompt string
|
|
SampleAnswerVoicePrompt string
|
|
SampleAnswer string
|
|
Tips string
|
|
Type string // MCQ, TRUE_FALSE, SHORT
|
|
}
|