🎉 Initial Commit of Ring
This commit is contained in:
45
pkg/ring/models/notification.go
Normal file
45
pkg/ring/models/notification.go
Normal file
@@ -0,0 +1,45 @@
|
||||
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"`
|
||||
}
|
||||
Reference in New Issue
Block a user