Changeset 0.20.0 (#85)
This commit is contained in:
40
server/models/models_notification.go
Normal file
40
server/models/models_notification.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// =========================================
|
||||
// NOTIFICATIONS (v0.20.0)
|
||||
// =========================================
|
||||
|
||||
// Notification represents an in-app notification for a user.
|
||||
// Notifications are immutable once created — only is_read can be toggled.
|
||||
type Notification struct {
|
||||
ID string `json:"id" db:"id"`
|
||||
UserID string `json:"user_id" db:"user_id"`
|
||||
Type string `json:"type" db:"type"` // domain.action, e.g. "role.fallback", "kb.ready"
|
||||
Title string `json:"title" db:"title"` // short summary shown in bell dropdown
|
||||
Body string `json:"body,omitempty" db:"body"` // optional detail text
|
||||
ResourceType string `json:"resource_type,omitempty" db:"resource_type"` // "channel", "knowledge_base", "project", etc.
|
||||
ResourceID string `json:"resource_id,omitempty" db:"resource_id"` // navigable entity ID (no FK — resource may be deleted)
|
||||
IsRead bool `json:"is_read" db:"is_read"`
|
||||
CreatedAt time.Time `json:"created_at" db:"created_at"`
|
||||
}
|
||||
|
||||
// Notification type constants. Convention: domain.action.
|
||||
// Free-form strings — new types don't require migration.
|
||||
const (
|
||||
NotifTypeRoleFallback = "role.fallback"
|
||||
NotifTypeKBReady = "kb.ready"
|
||||
NotifTypeKBError = "kb.error"
|
||||
NotifTypeGrantChanged = "grant.changed"
|
||||
NotifTypeProjectInvite = "project.invite"
|
||||
)
|
||||
|
||||
// Resource type constants for click-to-navigate.
|
||||
// Note: ResourceTypeKnowledgeBase is already declared in models.go (resource_grants).
|
||||
const (
|
||||
ResourceTypeChannel = "channel"
|
||||
ResourceTypeProject = "project"
|
||||
ResourceTypeTeam = "team"
|
||||
ResourceTypeGroup = "group"
|
||||
)
|
||||
Reference in New Issue
Block a user