This repository has been archived on 2024-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
core-old/internal/msg/publisher_ennoblement.go
Dawid Wysokiński a530fdbe99
All checks were successful
continuous-integration/drone/push Build is passing
refactor(msg): simplify publishers
2023-02-24 06:02:34 +01:00

40 lines
1.1 KiB
Go

package msg
import (
"context"
"fmt"
"gitea.dwysokinski.me/twhelp/core/internal/domain"
"gitea.dwysokinski.me/twhelp/core/internal/msg/internal/model"
"github.com/ThreeDotsLabs/watermill/message"
)
type EnnoblementPublisher struct {
publisher message.Publisher
marshaler CommandEventMarshaler
}
func NewEnnoblementPublisher(publisher message.Publisher, marshaler CommandEventMarshaler) *EnnoblementPublisher {
return &EnnoblementPublisher{publisher: publisher, marshaler: marshaler}
}
func (e *EnnoblementPublisher) CmdRefresh(ctx context.Context, payloads ...domain.RefreshEnnoblementsCmdPayload) error {
msgs := make([]*message.Message, 0, len(payloads))
for _, p := range payloads {
msg, err := e.marshaler.Marshal(model.RefreshEnnoblementsCmdPayload(p))
if err != nil {
return fmt.Errorf("%s: couldn't marshal RefreshEnnoblementsCmdPayload: %w", p.Key, err)
}
msg.SetContext(ctx)
msgs = append(msgs, msg)
}
if err := e.publisher.Publish(ennoblementsCmdRefresh, msgs...); err != nil {
return fmt.Errorf("%s: publisher.Publish: %w", ennoblementsCmdRefresh, err)
}
return nil
}