announcement.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package dto
  2. import (
  3. "time"
  4. "github.com/Wei-Shaw/sub2api/internal/service"
  5. )
  6. type Announcement struct {
  7. ID int64 `json:"id"`
  8. Title string `json:"title"`
  9. Content string `json:"content"`
  10. Status string `json:"status"`
  11. NotifyMode string `json:"notify_mode"`
  12. Targeting service.AnnouncementTargeting `json:"targeting"`
  13. StartsAt *time.Time `json:"starts_at,omitempty"`
  14. EndsAt *time.Time `json:"ends_at,omitempty"`
  15. CreatedBy *int64 `json:"created_by,omitempty"`
  16. UpdatedBy *int64 `json:"updated_by,omitempty"`
  17. CreatedAt time.Time `json:"created_at"`
  18. UpdatedAt time.Time `json:"updated_at"`
  19. }
  20. type UserAnnouncement struct {
  21. ID int64 `json:"id"`
  22. Title string `json:"title"`
  23. Content string `json:"content"`
  24. NotifyMode string `json:"notify_mode"`
  25. StartsAt *time.Time `json:"starts_at,omitempty"`
  26. EndsAt *time.Time `json:"ends_at,omitempty"`
  27. ReadAt *time.Time `json:"read_at,omitempty"`
  28. CreatedAt time.Time `json:"created_at"`
  29. UpdatedAt time.Time `json:"updated_at"`
  30. }
  31. func AnnouncementFromService(a *service.Announcement) *Announcement {
  32. if a == nil {
  33. return nil
  34. }
  35. return &Announcement{
  36. ID: a.ID,
  37. Title: a.Title,
  38. Content: a.Content,
  39. Status: a.Status,
  40. NotifyMode: a.NotifyMode,
  41. Targeting: a.Targeting,
  42. StartsAt: a.StartsAt,
  43. EndsAt: a.EndsAt,
  44. CreatedBy: a.CreatedBy,
  45. UpdatedBy: a.UpdatedBy,
  46. CreatedAt: a.CreatedAt,
  47. UpdatedAt: a.UpdatedAt,
  48. }
  49. }
  50. func UserAnnouncementFromService(a *service.UserAnnouncement) *UserAnnouncement {
  51. if a == nil {
  52. return nil
  53. }
  54. return &UserAnnouncement{
  55. ID: a.Announcement.ID,
  56. Title: a.Announcement.Title,
  57. Content: a.Announcement.Content,
  58. NotifyMode: a.Announcement.NotifyMode,
  59. StartsAt: a.Announcement.StartsAt,
  60. EndsAt: a.Announcement.EndsAt,
  61. ReadAt: a.ReadAt,
  62. CreatedAt: a.Announcement.CreatedAt,
  63. UpdatedAt: a.Announcement.UpdatedAt,
  64. }
  65. }