75 lines
1.7 KiB
Go
75 lines
1.7 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
|
)
|
|
|
|
type Announcement struct {
|
|
ID int64 `json:"id"`
|
|
Title string `json:"title"`
|
|
Content string `json:"content"`
|
|
Status string `json:"status"`
|
|
|
|
Targeting service.AnnouncementTargeting `json:"targeting"`
|
|
|
|
StartsAt *time.Time `json:"starts_at,omitempty"`
|
|
EndsAt *time.Time `json:"ends_at,omitempty"`
|
|
|
|
CreatedBy *int64 `json:"created_by,omitempty"`
|
|
UpdatedBy *int64 `json:"updated_by,omitempty"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type UserAnnouncement struct {
|
|
ID int64 `json:"id"`
|
|
Title string `json:"title"`
|
|
Content string `json:"content"`
|
|
|
|
StartsAt *time.Time `json:"starts_at,omitempty"`
|
|
EndsAt *time.Time `json:"ends_at,omitempty"`
|
|
|
|
ReadAt *time.Time `json:"read_at,omitempty"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func AnnouncementFromService(a *service.Announcement) *Announcement {
|
|
if a == nil {
|
|
return nil
|
|
}
|
|
return &Announcement{
|
|
ID: a.ID,
|
|
Title: a.Title,
|
|
Content: a.Content,
|
|
Status: a.Status,
|
|
Targeting: a.Targeting,
|
|
StartsAt: a.StartsAt,
|
|
EndsAt: a.EndsAt,
|
|
CreatedBy: a.CreatedBy,
|
|
UpdatedBy: a.UpdatedBy,
|
|
CreatedAt: a.CreatedAt,
|
|
UpdatedAt: a.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func UserAnnouncementFromService(a *service.UserAnnouncement) *UserAnnouncement {
|
|
if a == nil {
|
|
return nil
|
|
}
|
|
return &UserAnnouncement{
|
|
ID: a.Announcement.ID,
|
|
Title: a.Announcement.Title,
|
|
Content: a.Announcement.Content,
|
|
StartsAt: a.Announcement.StartsAt,
|
|
EndsAt: a.Announcement.EndsAt,
|
|
ReadAt: a.ReadAt,
|
|
CreatedAt: a.Announcement.CreatedAt,
|
|
UpdatedAt: a.Announcement.UpdatedAt,
|
|
}
|
|
}
|