notification

package
v0.0.0-...-5f5e9cb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2026 License: Apache-2.0 Imports: 18 Imported by: 14

Documentation

Overview

Package notification models notifications sent to users.

Index

Constants

View Source
const (
	Collection = "notifications"
)

Variables

This section is empty.

Functions

func FormatSlackTarget

func FormatSlackTarget(ctx context.Context, target string) (string, error)

FormatSlackTarget uses the slackMemberId instead of the userName when possible.

func InsertMany

func InsertMany(ctx context.Context, items ...Notification) error

Types

type Notification

type Notification struct {
	ID         string           `bson:"_id"`
	Subscriber event.Subscriber `bson:"subscriber"`
	Payload    any              `bson:"payload"`

	SentAt   time.Time            `bson:"sent_at,omitempty"`
	Error    string               `bson:"error,omitempty"`
	Metadata NotificationMetadata `bson:"metadata,omitempty"`
}

func Find

func Find(ctx context.Context, id string) (*Notification, error)

func FindByEventID

func FindByEventID(ctx context.Context, id string) ([]Notification, error)

func FindUnprocessed

func FindUnprocessed(ctx context.Context) ([]Notification, error)

func New

func New(eventID, trigger string, subscriber *event.Subscriber, payload any) (*Notification, error)

New returns a new Notification, with a correctly initialised ID

func (*Notification) Composer

func (n *Notification) Composer(ctx context.Context) (message.Composer, error)

Composer builds a grip/message.Composer for the notification. Composer is guaranteed to be non-nil if error is nil, but the composer may not be loggable

func (*Notification) MarkError

func (n *Notification) MarkError(ctx context.Context, sendErr error) error

func (*Notification) MarkSent

func (n *Notification) MarkSent(ctx context.Context) error

func (*Notification) SenderKey

func (n *Notification) SenderKey() (evergreen.SenderKey, error)

SenderKey returns an evergreen.SenderKey to get a grip sender for this notification from the evergreen environment

func (*Notification) SetBSON

func (n *Notification) SetBSON(raw mgobson.Raw) error

func (*Notification) SetTaskMetadata

func (n *Notification) SetTaskMetadata(ID string, execution int)

func (*Notification) UnmarshalBSON

func (d *Notification) UnmarshalBSON(in []byte) error

type NotificationMetadata

type NotificationMetadata struct {
	TaskID        string `bson:"task_id,omitempty"`
	TaskExecution int    `bson:"task_execution,omitempty"`
}

type NotificationStats

type NotificationStats struct {
	GithubPullRequest int `json:"github_pull_request" bson:"github_pull_request" yaml:"github_pull_request"`
	JIRAIssue         int `json:"jira_issue" bson:"jira_issue" yaml:"jira_issue"`
	JIRAComment       int `json:"jira_comment" bson:"jira_comment" yaml:"jira_comment"`
	EvergreenWebhook  int `json:"evergreen_webhook" bson:"evergreen_webhook" yaml:"evergreen_webhook"`
	Email             int `json:"email" bson:"email" yaml:"email"`
	Slack             int `json:"slack" bson:"slack" yaml:"slack"`
	GithubCheck       int `json:"github_check" bson:"github_check" yaml:"github_check"`
	GithubMerge       int `json:"github_merge" bson:"github_merge" yaml:"github_merge"`
}

func CollectUnsentNotificationStats

func CollectUnsentNotificationStats(ctx context.Context) (*NotificationStats, error)

type SlackPayload

type SlackPayload struct {
	Body        string                    `bson:"body"`
	Attachments []message.SlackAttachment `bson:"attachments"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL