All checks were successful
continuous-integration/drone/push Build is passing
41 lines
1.1 KiB
Go
41 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 ServerPublisher struct {
|
|
publisher message.Publisher
|
|
marshaler CommandEventMarshaler
|
|
}
|
|
|
|
func NewServerPublisher(publisher message.Publisher, marshaler CommandEventMarshaler) *ServerPublisher {
|
|
return &ServerPublisher{publisher: publisher, marshaler: marshaler}
|
|
}
|
|
|
|
func (s *ServerPublisher) CmdRefresh(ctx context.Context, payloads ...domain.RefreshServersCmdPayload) error {
|
|
msgs := make([]*message.Message, 0, len(payloads))
|
|
for _, p := range payloads {
|
|
msg, err := s.marshaler.Marshal(model.RefreshServersCmdPayload(p))
|
|
if err != nil {
|
|
return fmt.Errorf("%s: couldn't marshal RefreshServersCmdPayload: %w", p.VersionCode, err)
|
|
}
|
|
|
|
msg.SetContext(ctx)
|
|
|
|
msgs = append(msgs, msg)
|
|
}
|
|
|
|
if err := s.publisher.Publish(serversCmdRefresh, msgs...); err != nil {
|
|
return fmt.Errorf("%s: publisher.Publish: %w", serversCmdRefresh, err)
|
|
}
|
|
|
|
return nil
|
|
}
|