package event

type (
	EventStatus string
	Severity    int
)

const (
	DisplayEventTopic string = "display_event"

	// only events with status listed here are visible on web console
	EventStatusStarted   EventStatus = "started"
	EventStatusSucceeded EventStatus = "succeeded"
	EventStatusFailed    EventStatus = "failed"
	EventStatusCanceled  EventStatus = "canceled"
	EventStatusSkipped   EventStatus = "skipped"
	EventStatusRunning   EventStatus = "running"
	EventStatusPaused    EventStatus = "paused"
	EventStatusResumed   EventStatus = "resumed"

	EventSeverityDebug    Severity = -4
	EventSeverityInfo     Severity = 0
	EventSeverityWarning  Severity = 2
	EventSeverityCritical Severity = 4
)

type DisplayEvent struct {
	DisplayEventType string      `json:"display_event_type,omitempty"`
	DisplayStatus    EventStatus `json:"display_status,omitempty"`
	Severity         Severity    `json:"severity,omitempty"`
	Summary          string      `json:"summary,omitempty"`
	HappenedAtMs     uint64      `json:"happened_at_ms,string,omitempty"` // event happened time, unix timestamp, ms
	Author           string      `json:"author,omitempty"`                // will be filled with email of author_id if empty
	AuthorID         uint64      `json:"author_id,string,omitempty"`
	TenantID         uint64      `json:"tenant_id,string"`
	ProjectID        uint64      `json:"project_id,string"`
	ClusterID        uint64      `json:"cluster_id,string"`
	ContextID        string      `json:"context_id,omitempty"`
	Detail           any         `json:"detail,omitempty"`
}
