package entity import "time" const ( SettingMemberPreviewSeconds = "member_preview_seconds" DefaultPreviewSeconds = 30 MaxCoverBytes = 5 << 20 // 5 MiB MaxBackgroundBytes = 5 << 20 // 5 MiB MaxAudioBytes = 50 << 20 // 50 MiB ) // Track is one curated music item for the Spark music list. type Track struct { ID int64 `json:"id"` Title string `json:"title"` CoverKey string `json:"coverKey"` AudioKey string `json:"audioKey"` BackgroundKey string `json:"backgroundKey"` CoverURL string `json:"coverUrl"` AudioURL string `json:"audioUrl"` BackgroundURL string `json:"backgroundUrl"` RequireMember bool `json:"requireMember"` SortOrder int `json:"sortOrder"` Enabled bool `json:"enabled"` CategoryIDs []int64 `json:"categoryIds"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } // Category is a top-level or sub music category (parentID nil = 总分类). type Category struct { ID int64 `json:"id"` ParentID *int64 `json:"parentId"` Name string `json:"name"` SortOrder int `json:"sortOrder"` Enabled bool `json:"enabled"` Children []Category `json:"children,omitempty"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } // Settings is the global music ops config. type Settings struct { MemberPreviewSeconds int `json:"memberPreviewSeconds"` } // Playlist is the client-facing payload. type Playlist struct { Items []Track `json:"items"` Categories []Category `json:"categories"` MemberPreviewSeconds int `json:"memberPreviewSeconds"` }