user.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // Package models определяет основные доменные модели Photoplaces.
  2. // Содержит структуры: User, Place, PlaceImage, Booking, Review, Service,
  3. // ServiceImage, Tag, Feature, а также фильтры (UserFilter, PlaceFilter, ServiceFilter)
  4. // и вспомогательные типы (Bounds). Все модели имеют JSON-теги для сериализации.
  5. package models
  6. import "time"
  7. type User struct {
  8. ID string `json:"id"`
  9. Email string `json:"email"`
  10. PasswordHash string `json:"-"`
  11. Role string `json:"role"`
  12. Status string `json:"status"`
  13. Name *string `json:"name"`
  14. AvatarURL *string `json:"avatar_url"`
  15. Phone *string `json:"phone"`
  16. Bio *string `json:"bio"`
  17. Country *string `json:"country"`
  18. CreatedAt time.Time `json:"created_at"`
  19. UpdatedAt time.Time `json:"updated_at"`
  20. DeletedAt *time.Time `json:"-"`
  21. }
  22. type UserFilter struct {
  23. Role string
  24. Status string
  25. Limit_ int
  26. Cursor string
  27. }
  28. func (f UserFilter) Limit() int {
  29. if f.Limit_ <= 0 || f.Limit_ > 100 {
  30. return 20
  31. }
  32. return f.Limit_
  33. }