Files
Turbine/pkg/ring/models/notification.go
2025-12-13 22:51:11 +08:00

46 lines
1.7 KiB
Go

package models
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
type PushProvider int
const (
PushProviderApple PushProvider = iota
PushProviderGoogle
)
type Notification struct {
Id uuid.UUID `gorm:"primarykey;type:uuid;default:gen_random_uuid()" json:"id"`
Topic string `gorm:"not null;size:1024" json:"topic"`
Title *string `json:"title"`
Subtitle *string `json:"subtitle"`
Content *string `json:"content"`
Meta map[string]any `gorm:"type:jsonb;default:'{}'::jsonb;not null" json:"meta"`
Priority int `gorm:"default:10" json:"priority"`
ViewedAt *time.Time `json:"viewed_at"`
AccountId uuid.UUID `gorm:"type:uuid;not null" json:"account_id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"`
}
type NotificationPushSubscription struct {
Id uuid.UUID `gorm:"primarykey;type:uuid;default:gen_random_uuid()" json:"id"`
AccountId uuid.UUID `gorm:"type:uuid;not null;uniqueIndex:account_device_deleted" json:"account_id"`
DeviceId string `gorm:"not null;size:8192;uniqueIndex:account_device_deleted" json:"device_id"`
DeviceToken string `gorm:"not null;size:8192" json:"device_token"`
Provider PushProvider `gorm:"not null" json:"provider"`
CountDelivered int `gorm:"default:0" json:"count_delivered"`
LastUsedAt *time.Time `json:"last_used_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"uniqueIndex:account_device_deleted,index" json:"deleted_at"`
}