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 8b01b42949
Some checks failed
continuous-integration/drone/push Build is failing
refactor(msg): simplify publishers
2023-02-24 05:52:33 +01:00

40 lines
1.0 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("marshaler.Marshal: %w", err)
}
msg.SetContext(ctx)
msgs = append(msgs, msg)
}
if err := e.publisher.Publish(ennoblementsCmdRefresh, msgs...); err != nil {
return fmt.Errorf("publisher.Publish: %w", err)
}
return nil
}