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 media assets for the requested role (preview/main).
	Assets []*models.MediaAsset `json:"assets,omitempty"`
	// PreviewSeconds indicates the max preview duration (only meaningful for preview response).
	PreviewSeconds int32 `json:"preview_seconds,omitempty"`
}
