service.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package models
  2. import "time"
  3. type Service struct {
  4. ID string `json:"id"`
  5. ExecutorID string `json:"executor_id"`
  6. Title string `json:"title"`
  7. Description *string `json:"description"`
  8. Price int `json:"price"`
  9. Currency string `json:"currency"`
  10. DurationMinutes *int `json:"duration_minutes"`
  11. Status string `json:"status"`
  12. Rating float64 `json:"rating"`
  13. ReviewsCount int `json:"reviews_count"`
  14. Tags []Tag `json:"tags"`
  15. PortfolioImages []ServiceImage `json:"portfolio_images,omitempty"`
  16. CreatedAt time.Time `json:"created_at"`
  17. UpdatedAt time.Time `json:"updated_at"`
  18. DeletedAt *time.Time `json:"-"`
  19. }
  20. type ServiceImage struct {
  21. ID string `json:"id"`
  22. ServiceID string `json:"service_id"`
  23. URL string `json:"url"`
  24. Alt string `json:"alt"`
  25. SortOrder int `json:"sort_order"`
  26. }
  27. type ServiceFilter struct {
  28. Tags []string
  29. MinRating float64
  30. PriceMin *int
  31. PriceMax *int
  32. Status string
  33. Limit_ int
  34. }
  35. func (f ServiceFilter) Limit() int {
  36. if f.Limit_ <= 0 || f.Limit_ > 100 {
  37. return 20
  38. }
  39. return f.Limit_
  40. }