diff --git a/pkg/models/events.go b/pkg/models/events.go index faa1994d1..3aa7c7346 100644 --- a/pkg/models/events.go +++ b/pkg/models/events.go @@ -57,3 +57,12 @@ type TaskCommentCreatedEvent struct { func (t *TaskCommentCreatedEvent) TopicName() string { return "task.comment.created" } + +type NamespaceCreatedEvent struct { + Namespace *Namespace + Doer *user.User +} + +func (n *NamespaceCreatedEvent) TopicName() string { + return "namespace.created" +} diff --git a/pkg/models/namespace.go b/pkg/models/namespace.go index 277f452d8..2896f7186 100644 --- a/pkg/models/namespace.go +++ b/pkg/models/namespace.go @@ -17,6 +17,7 @@ package models import ( + "code.vikunja.io/api/pkg/events" "sort" "strconv" "strings" @@ -478,6 +479,18 @@ func (n *Namespace) Create(s *xorm.Session, a web.Auth) (err error) { return err } + doer, err := user.GetFromAuth(a) + if err != nil { + return err + } + err = events.Publish(&NamespaceCreatedEvent{ + Namespace: n, + Doer: doer, + }) + if err != nil { + return err + } + metrics.UpdateCount(1, metrics.NamespaceCountKey) return }