Files
thamanyah/cms/internal/models/video.go
T
2026-08-27 21:30:56 +03:00

42 lines
1.3 KiB
Go

package models
import "time"
type Video struct {
ID string
Title string
Description string
CategoryIDs []int16
Tags string
FileName string
StorageKey string
MediaConvertJobID string
Status VideoStatus
PlaybackURL string
SizeBytes int64
CreatedAt time.Time
UpdatedAt time.Time
}
// VideoStatus is the transcoding lifecycle state of a video, stored verbatim
// in videos.status. The set is closed on both sides: the database rejects
// anything outside it via the videos_status_check constraint. Adding a state
// means adding a constant here, widening that constraint in a new migration,
// and extending the `enums` annotation on api.CompleteResponse.Status.
type VideoStatus string
const (
// VideoStatusProcessing is set when the MediaConvert job is queued. Every
// video starts here, and nothing moves it on yet — see Known gaps.
VideoStatusProcessing VideoStatus = "processing"
// VideoStatusReady means transcoding finished and the output is in the
// encoded bucket, reachable through CloudFront.
VideoStatusReady VideoStatus = "ready"
// VideoStatusFailed means the MediaConvert job ended in an error.
VideoStatusFailed VideoStatus = "failed"
)
func (s VideoStatus) String() string {
return string(s)
}