Add events #777
|
@ -19,11 +19,12 @@ package events
|
|||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
"github.com/ThreeDotsLabs/watermill/message/router/middleware"
|
||||
"github.com/ThreeDotsLabs/watermill/pubsub/gochannel"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -64,12 +65,7 @@ func InitEvents() (err error) {
|
|||
for topic, funcs := range listeners {
|
||||
for _, handler := range funcs {
|
||||
router.AddNoPublisherHandler(topic+watermill.NewShortUUID(), topic, pubsub, func(msg *message.Message) error {
|
||||
var payload interface{}
|
||||
err = json.Unmarshal(msg.Payload, payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return handler.Handle(payload)
|
||||
return handler.Handle(msg.Payload)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,10 @@
|
|||
|
||||
package events
|
||||
|
||||
import "github.com/ThreeDotsLabs/watermill/message"
|
||||
|
||||
type Listener interface {
|
||||
Handle(payload interface{}) error
|
||||
Handle(payload message.Payload) error
|
||||
}
|
||||
|
||||
var listeners map[string][]Listener
|
||||
|
|
|
@ -16,7 +16,12 @@
|
|||
|
||||
package models
|
||||
|
||||
import "code.vikunja.io/api/pkg/events"
|
||||
import (
|
||||
"code.vikunja.io/api/pkg/events"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
"encoding/json"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
func RegisterListeners() {
|
||||
events.RegisterListener((&TaskCreatedEvent{}).TopicName(), &SendTaskCreatedNotification{})
|
||||
|
@ -25,6 +30,13 @@ func RegisterListeners() {
|
|||
type SendTaskCreatedNotification struct {
|
||||
}
|
||||
|
||||
func (s *SendTaskCreatedNotification) Handle(payload interface{}) error {
|
||||
panic("implement me")
|
||||
func (s *SendTaskCreatedNotification) Handle(payload message.Payload) (err error) {
|
||||
task := &Task{}
|
||||
err = json.Unmarshal(payload, task)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debugf("task.created: %v", task)
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user