package dto

import "quyun/v2/app/requests"

type ContentListFilter struct {
	requests.Pagination
	Keyword  *string `query:"keyword"`
	Genre    *string `query:"genre"`
	TenantID *string `query:"tenantId"`
	Sort     *string `query:"sort"`
}

type ContentItem struct {
	ID           string  `json:"id"`
	Title        string  `json:"title"`
	Cover        string  `json:"cover"`
	Genre        string  `json:"genre"`
	Type         string  `json:"type"` // video, audio, article
	Price        float64 `json:"price"`
	AuthorID     string  `json:"author_id"`
	AuthorName   string  `json:"author_name"`
	AuthorAvatar string  `json:"author_avatar"`
	Views        int     `json:"views"`
	Likes        int     `json:"likes"`
	IsPurchased  bool    `json:"is_purchased"`
}

type ContentDetail struct {
	ContentItem
	Description string     `json:"description"`
	Body        string     `json:"body"`
	MediaUrls   []MediaURL `json:"media_urls"`
	Meta        Meta       `json:"meta"`
	IsLiked     bool       `json:"is_liked"`
	IsFavorited bool       `json:"is_favorited"`
}

type MediaURL struct {
	Type     string `json:"type"`
	URL      string `json:"url"`
	Duration int    `json:"duration"`
}

type Meta struct {
	Role string `json:"role"`
	Key  string `json:"key"`
	Beat string `json:"beat"`
}

type Comment struct {
	ID           string `json:"id"`
	Content      string `json:"content"`
	UserID       string `json:"user_id"`
	UserNickname string `json:"user_nickname"`
	UserAvatar   string `json:"user_avatar"`
	CreateTime   string `json:"create_time"`
	Likes        int    `json:"likes"`
	IsLiked      bool   `json:"is_liked"`
	ReplyTo      string `json:"reply_to"`
}

type CommentCreateForm struct {
	Content string `json:"content"`
	ReplyTo string `json:"reply_to"`
}

type Topic struct {
	ID    string `json:"id"`
	Title string `json:"title"`
	Cover string `json:"cover"`
	Tag   string `json:"tag"`
	Count int    `json:"count"`
}

type ContentPrice struct {
	Currency        string  `json:"currency"`
	PriceAmount     float64 `json:"price_amount"`
	DiscountType    string  `json:"discount_type"`
	DiscountValue   float64 `json:"discount_value"`
	DiscountStartAt string  `json:"discount_start_at"`
	DiscountEndAt   string  `json:"discount_end_at"`
}
