45 lines
1.8 KiB
Go
45 lines
1.8 KiB
Go
package dto
|
|
|
|
import (
|
|
"quyun/v2/app/requests"
|
|
"quyun/v2/database/models"
|
|
)
|
|
|
|
// ContentListFilter defines list query filters for published contents within a tenant.
|
|
type ContentListFilter struct {
|
|
// Pagination controls paging parameters (page/limit).
|
|
requests.Pagination `json:",inline" query:",inline"`
|
|
// Keyword filters by title keyword (LIKE).
|
|
Keyword *string `json:"keyword,omitempty" query:"keyword"`
|
|
}
|
|
|
|
// ContentItem is a list item with price snapshot and access indicator for current user.
|
|
type ContentItem struct {
|
|
// Content is the content entity.
|
|
Content *models.Content `json:"content,omitempty"`
|
|
// Price is the current price settings for the content (may be nil if not set).
|
|
Price *models.ContentPrice `json:"price,omitempty"`
|
|
// HasAccess indicates whether current user can access main assets (free/owner/purchased).
|
|
HasAccess bool `json:"has_access"`
|
|
}
|
|
|
|
// ContentDetail is the detail payload with price snapshot and access indicator for current user.
|
|
type ContentDetail struct {
|
|
// Content is the content entity.
|
|
Content *models.Content `json:"content,omitempty"`
|
|
// Price is the current price settings for the content (may be nil if not set).
|
|
Price *models.ContentPrice `json:"price,omitempty"`
|
|
// HasAccess indicates whether current user can access main assets (free/owner/purchased).
|
|
HasAccess bool `json:"has_access"`
|
|
}
|
|
|
|
// ContentAssetsResponse returns assets for either preview or main role.
|
|
type ContentAssetsResponse struct {
|
|
// Content is the content entity.
|
|
Content *models.Content `json:"content,omitempty"`
|
|
// Assets is the list of playable assets for the requested role (preview/main).
|
|
Assets []*ContentPlayableAsset `json:"assets,omitempty"`
|
|
// PreviewSeconds indicates the max preview duration (only meaningful for preview response).
|
|
PreviewSeconds int32 `json:"preview_seconds,omitempty"`
|
|
}
|