40 lines
1.0 KiB
Go
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
|
|
}
|