85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package domain
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
ErrPrerequisiteNotMet = errors.New("prerequisites not completed")
|
|
ErrProgressNotFound = errors.New("progress record not found")
|
|
ErrPrerequisiteExists = errors.New("prerequisite already exists")
|
|
ErrSelfPrerequisite = errors.New("sub-course cannot be its own prerequisite")
|
|
ErrSubCourseAlreadyStarted = errors.New("sub-course already started")
|
|
)
|
|
|
|
type SubCoursePrerequisite struct {
|
|
ID int64
|
|
SubCourseID int64
|
|
PrerequisiteSubCourseID int64
|
|
PrerequisiteTitle string
|
|
PrerequisiteLevel string
|
|
PrerequisiteDisplayOrder int32
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type SubCourseDependent struct {
|
|
ID int64
|
|
SubCourseID int64
|
|
PrerequisiteSubCourseID int64
|
|
DependentTitle string
|
|
DependentLevel string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type ProgressStatus string
|
|
|
|
const (
|
|
ProgressStatusNotStarted ProgressStatus = "NOT_STARTED"
|
|
ProgressStatusInProgress ProgressStatus = "IN_PROGRESS"
|
|
ProgressStatusCompleted ProgressStatus = "COMPLETED"
|
|
)
|
|
|
|
type UserSubCourseProgress struct {
|
|
ID int64
|
|
UserID int64
|
|
SubCourseID int64
|
|
Status ProgressStatus
|
|
ProgressPercentage int16
|
|
StartedAt *time.Time
|
|
CompletedAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt *time.Time
|
|
}
|
|
|
|
type SubCourseWithProgress struct {
|
|
SubCourseID int64
|
|
Title string
|
|
Description *string
|
|
Thumbnail *string
|
|
DisplayOrder int32
|
|
Level string
|
|
IsActive bool
|
|
ProgressStatus ProgressStatus
|
|
ProgressPercentage int16
|
|
StartedAt *time.Time
|
|
CompletedAt *time.Time
|
|
UnmetPrerequisitesCount int64
|
|
IsLocked bool
|
|
}
|
|
|
|
type UserCourseProgressItem struct {
|
|
ID int64
|
|
UserID int64
|
|
SubCourseID int64
|
|
Status ProgressStatus
|
|
ProgressPercentage int16
|
|
StartedAt *time.Time
|
|
CompletedAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt *time.Time
|
|
SubCourseTitle string
|
|
SubCourseLevel string
|
|
SubCourseDisplayOrder int32
|
|
}
|