Increase and decrease the team metrics counter with events

This commit is contained in:
kolaente 2021-02-01 21:33:22 +01:00
parent dfbb3fe6f4
commit c3de561c29
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
3 changed files with 70 additions and 5 deletions

View File

@ -194,3 +194,25 @@ type TeamMemberAddedEvent struct {
func (t *TeamMemberAddedEvent) TopicName() string {
return "team.member.added"
}
// TeamCreatedEvent represents a TeamCreatedEvent event
type TeamCreatedEvent struct {
Team *Team
Doer *user.User
}
// TopicName defines the name for TeamCreatedEvent
func (t *TeamCreatedEvent) TopicName() string {
return "team.created"
}
// TeamDeletedEvent represents a TeamDeletedEvent event
type TeamDeletedEvent struct {
Team *Team
Doer *user.User
}
// TopicName defines the name for TeamDeletedEvent
func (t *TeamDeletedEvent) TopicName() string {
return "team.deleted"
}

View File

@ -29,6 +29,8 @@ func RegisterListeners() {
events.RegisterListener((&NamespaceDeletedEvent{}).TopicName(), &DecreaseNamespaceCounter{})
events.RegisterListener((&TaskCreatedEvent{}).TopicName(), &IncreaseTaskCounter{})
events.RegisterListener((&TaskDeletedEvent{}).TopicName(), &DecreaseTaskCounter{})
events.RegisterListener((&TeamDeletedEvent{}).TopicName(), &DecreaseTeamCounter{})
events.RegisterListener((&TeamCreatedEvent{}).TopicName(), &IncreaseTeamCounter{})
}
//////
@ -123,3 +125,36 @@ func (s *DecreaseNamespaceCounter) Handle(payload message.Payload) (err error) {
metrics.UpdateCount(-1, metrics.NamespaceCountKey)
return nil
}
///////
// Team Events
// IncreaseTeamCounter represents a listener
type IncreaseTeamCounter struct {
}
// Name defines the name for the IncreaseTeamCounter listener
func (s *IncreaseTeamCounter) Name() string {
return "team.counter.increase"
}
// Hanlde is executed when the event IncreaseTeamCounter listens on is fired
func (s *IncreaseTeamCounter) Handle(payload message.Payload) (err error) {
metrics.UpdateCount(1, metrics.TeamCountKey)
return nil
}
// DecreaseTeamCounter represents a listener
type DecreaseTeamCounter struct {
}
// Name defines the name for the DecreaseTeamCounter listener
func (s *DecreaseTeamCounter) Name() string {
return "team.counter.decrease"
}
// Hanlde is executed when the event DecreaseTeamCounter listens on is fired
func (s *DecreaseTeamCounter) Handle(payload message.Payload) (err error) {
metrics.UpdateCount(-1, metrics.TeamCountKey)
return nil
}

View File

@ -17,11 +17,11 @@
package models
import (
"code.vikunja.io/api/pkg/events"
"time"
"xorm.io/xorm"
"code.vikunja.io/api/pkg/metrics"
"code.vikunja.io/api/pkg/user"
"code.vikunja.io/web"
"xorm.io/builder"
@ -270,8 +270,10 @@ func (t *Team) Create(s *xorm.Session, a web.Auth) (err error) {
return err
}
metrics.UpdateCount(1, metrics.TeamCountKey)
return
return events.Publish(&TeamCreatedEvent{
Team: t,
Doer: doer,
})
}
// Delete deletes a team
@ -311,8 +313,14 @@ func (t *Team) Delete(s *xorm.Session, a web.Auth) (err error) {
return
}
metrics.UpdateCount(-1, metrics.TeamCountKey)
return
doer, err := user.GetFromAuth(a)
if err != nil {
return err
}
return events.Publish(&TeamDeletedEvent{
Team: t,
Doer: doer,
})
}
// Update is the handler to create a team