package push

import "time"

// Subscription represents a WebPush subscription stored for a user device.
type Subscription struct {
	ID          int64     `json:"id"`
	UserID      int64     `json:"user_id"`
	Endpoint    string    `json:"endpoint"`
	P256dh      string    `json:"p256dh"`
	Auth        string    `json:"auth"`
	DeviceToken string    `json:"device_token,omitempty"`
	App         string    `json:"app"`
	UserAgent   string    `json:"user_agent,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

// Payload represents the push message delivered to the browser service worker.
type Payload struct {
	Title string `json:"title"`
	Body  string `json:"body"`
	Icon  string `json:"icon,omitempty"`
	Badge string `json:"badge,omitempty"`
	Sound string `json:"sound,omitempty"`
	URL   string `json:"url,omitempty"`
}

// SubscribeInput is the client payload when registering a push subscription.
type SubscribeInput struct {
	Endpoint    string `json:"endpoint"`
	Keys        struct {
		P256dh string `json:"p256dh"`
		Auth   string `json:"auth"`
	} `json:"keys"`
	DeviceToken string `json:"device_token,omitempty"`
	App         string `json:"app,omitempty"`
}
