Files
listmonk/models/bounces.go
2025-11-22 12:27:08 +05:30

35 lines
1.1 KiB
Go

package models
import (
"encoding/json"
"time"
)
const (
BounceTypeHard = "hard"
BounceTypeSoft = "soft"
BounceTypeComplaint = "complaint"
)
// Bounce represents a single bounce event.
type Bounce struct {
ID int `db:"id" json:"id"`
Type string `db:"type" json:"type"`
Source string `db:"source" json:"source"`
Meta json.RawMessage `db:"meta" json:"meta"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
// One of these should be provided.
Email string `db:"email" json:"email,omitempty"`
SubscriberUUID string `db:"subscriber_uuid" json:"subscriber_uuid,omitempty"`
SubscriberID int `db:"subscriber_id" json:"subscriber_id,omitempty"`
SubscriberStatus string `db:"subscriber_status" json:"subscriber_status"`
CampaignUUID string `db:"campaign_uuid" json:"campaign_uuid,omitempty"`
Campaign *json.RawMessage `db:"campaign" json:"campaign"`
// Pseudofield for getting the total number of bounces
// in searches and queries.
Total int `db:"total" json:"-"`
}