package dto import ( "with_you/internal/model" ) type TradeImageResponse struct { ID string `json:"id"` URL string `json:"url"` ThumbnailURL string `json:"thumbnail_url"` PreviewURL string `json:"preview_url"` PreviewURLLarge string `json:"preview_url_large"` Width int `json:"width"` Height int `json:"height"` } type TradeItemResponse struct { ID string `json:"id"` UserID string `json:"user_id"` TradeType string `json:"trade_type"` Category string `json:"category"` Title string `json:"title"` Content string `json:"content"` Segments model.MessageSegments `json:"segments,omitempty"` Images []TradeImageResponse `json:"images"` Price *float64 `json:"price,omitempty"` Condition string `json:"condition,omitempty"` Status string `json:"status"` ViewsCount int `json:"views_count"` FavoritesCount int `json:"favorites_count"` IsFavorited bool `json:"is_favorited"` Author *UserResponse `json:"author"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } type CreateTradeItemRequest struct { TradeType string `json:"trade_type" binding:"required,oneof=sell buy"` Category string `json:"category" binding:"required,oneof=digital book clothing daily cosmetics sport ticket other"` Title string `json:"title" binding:"required,max=100"` Content string `json:"content"` Segments model.MessageSegments `json:"segments"` Images []string `json:"images"` Price *float64 `json:"price"` Condition string `json:"condition" binding:"omitempty,oneof=brand_new like_new lightly_used well_used"` } type UpdateTradeItemRequest struct { TradeType *string `json:"trade_type" binding:"omitempty,oneof=sell buy"` Category *string `json:"category" binding:"omitempty,oneof=digital book clothing daily cosmetics sport ticket other"` Title *string `json:"title" binding:"omitempty,max=100"` Content *string `json:"content"` Segments model.MessageSegments `json:"segments"` Images []string `json:"images"` Price *float64 `json:"price"` Condition *string `json:"condition" binding:"omitempty,oneof=brand_new like_new lightly_used well_used"` } type UpdateTradeItemStatusRequest struct { Status string `json:"status" binding:"required,oneof=active sold bought offline"` } type TradeCursorPageResponse struct { Items []*TradeItemResponse `json:"list"` NextCursor string `json:"next_cursor,omitempty"` PrevCursor string `json:"prev_cursor,omitempty"` HasMore bool `json:"has_more"` } type TradeFavoriteResponse struct { Favorited bool `json:"favorited"` }