ac7eb0385d
- Updated GetByID methods in user and customer services to return specific "not found" errors for better clarity in error responses. - Modified NotificationResponse structure to include a new Recipient field, allowing for more flexible recipient handling. - Changed CreatedAt and UpdatedAt fields in NotificationResponse to use Unix timestamps (int64) for consistency across the application. - Improved notification retrieval logic to handle potential nil values for user and customer lookups, ensuring robust data handling.
59 lines
2.4 KiB
Go
59 lines
2.4 KiB
Go
package notification
|
|
|
|
import (
|
|
"tm/pkg/response"
|
|
)
|
|
|
|
// CreateRequest represents the request to create a notification
|
|
type NotificationRequest struct {
|
|
Recipient []string `json:"recipient"`
|
|
Tender string `json:"tender" valid:"optional,stringlength(1|100)"`
|
|
Channels []DeliveryChannel `json:"channels" valid:"required"`
|
|
Type NotificationType `json:"type" valid:"required"`
|
|
Priority NotificationPriority `json:"priority" valid:"required"`
|
|
Target TargetAudienceType `json:"target" valid:"required"`
|
|
Title string `json:"title" valid:"required"`
|
|
Description string `json:"description" valid:"required"`
|
|
Link *string `json:"link" valid:"optional,url"`
|
|
ScheduleAt int64 `json:"schedule_at" valid:"optional"`
|
|
}
|
|
|
|
// SearchForm represents the form for searching notifications
|
|
type SearchForm struct {
|
|
Status string `query:"status" valid:"optional"`
|
|
Method string `query:"method" valid:"optional"`
|
|
EventType string `query:"event_type" valid:"optional"`
|
|
Type string `query:"type" valid:"optional"`
|
|
Recipient string `query:"recipient" valid:"optional"`
|
|
Seen *bool `query:"seen" valid:"optional"`
|
|
Priority string `query:"priority" valid:"optional"`
|
|
}
|
|
|
|
type NotificationListResponse struct {
|
|
Notifications []*NotificationResponse `json:"notifications"`
|
|
Meta *response.Meta `json:"meta"`
|
|
}
|
|
|
|
type NotificationResponse struct {
|
|
ID string `json:"id"`
|
|
UserID string `json:"user_id"`
|
|
Recipient any `json:"recipient"`
|
|
Title string `json:"title"`
|
|
Message string `json:"message"`
|
|
Link *string `json:"link"`
|
|
Image *string `json:"image"`
|
|
Priority string `json:"priority"`
|
|
Type string `json:"type"`
|
|
EventType string `json:"event_type"`
|
|
Status string `json:"status"`
|
|
Methods map[string]string `json:"methods"`
|
|
Metadata map[string]any `json:"metadata"`
|
|
ScheduleAt int64 `json:"schedule_at"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
UpdatedAt int64 `json:"updated_at"`
|
|
Seen bool `json:"seen"`
|
|
SeenAt int64 `json:"seen_at"`
|
|
IsScheduled bool `json:"is_scheduled"`
|
|
ScheduledAt int64 `json:"scheduled_at"`
|
|
}
|