linstrom/storage-new/models/Notification.go
mstar 8f53e8a967
Some checks are pending
/ test (push) Waiting to run
Fix another gen definition
2025-04-04 14:06:47 +02:00

42 lines
1.2 KiB
Go

package models
import (
"database/sql"
"gorm.io/gen"
"gorm.io/gorm"
)
// Notifications inform users of inbound events
// happening to their content
type Notification struct {
gorm.Model
ForUser User // The user the notification is for
ForUserId string
SourceNote *Note // The note where the notification originates from
SourceNoteId sql.NullString
SourceUser *User // The user causing the notification
SourceUserId sql.NullString
Cause NotificationCauseType // What the cause of the notification is
ViewedState NotificationViewedState // What the last known state of the notification is
}
type INotification interface {
// Update a given set of notifications to a given viewed state.
// State should be a [NotificationViewedStateType]
//
// UPDATE @@table SET viewed_state = @state WHERE id IN @ids
SetState(state uint8, ids ...uint) error
// Get the lastest count amount of notifications with a given offset for a user
//
// SELECT * FROM @@table WHERE for_user_id = @userId
// ORDER BY id DESC
// {{if count > 0 }}
// LIMIT @count
// {{else}}
// LIMIT 20
// {{end}}
// OFFSET @offset
GetLatestWithOffset(userId string, count uint, offset uint) ([]gen.T, error)
}