package entity

import (
	"backend/pkg/notification/domain/notification"
	"time"

	"github.com/gocql/gocql"
)

// NotificationEvent represents an event that triggers a notification.
type NotificationEvent struct {
	EventID    gocql.UUID                  `db:"event_id" partition_key:"true"` // 事件 ID
	EventType  string                      `db:"event_type"`                    // POST_PUBLISHED / COMMENT_ADDED / MENTIONED ...
	ActorUID   string                      `db:"actor_uid"`                     // 觸發者 UID
	ObjectType string                      `db:"object_type"`                   // POST / COMMENT / USER ...
	ObjectID   string                      `db:"object_id"`                     // 對應物件 ID（post_id 等）
	Title      string                      `db:"title"`                         // 顯示用標題
	Body       string                      `db:"body"`                          // 顯示用內容 / 摘要
	Payload    string                      `db:"payload"`                       // JSON string（額外欄位，例如 {"postId": "..."}）
	Priority   notification.NotifyPriority `db:"priority"`                      //  1=critical, 2=high, 3=normal, 4=low
	CreatedAt  time.Time                   `db:"created_at"`                    // 事件時間（方便做 cross table 查詢）
}

func (ue *NotificationEvent) TableName() string {
	return "notification_event"
}
