feat: backend service
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package notification
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"galaxy/backend/internal/lobby"
|
||||
)
|
||||
|
||||
// LobbyAdapter returns an implementation of `lobby.NotificationPublisher`
|
||||
// backed by *Service. The adapter copies the producer-side intent shape
|
||||
// into notification.Intent and calls Submit; Submit's own malformed
|
||||
// fallback handles invalid payloads, so the adapter never blocks the
|
||||
// caller. The interface is the same one The wiring connects through the
|
||||
// no-op publisher.
|
||||
func (s *Service) LobbyAdapter() lobby.NotificationPublisher {
|
||||
return &lobbyAdapter{svc: s}
|
||||
}
|
||||
|
||||
type lobbyAdapter struct {
|
||||
svc *Service
|
||||
}
|
||||
|
||||
func (a *lobbyAdapter) PublishLobbyEvent(ctx context.Context, ev lobby.LobbyNotification) error {
|
||||
if a == nil || a.svc == nil {
|
||||
return nil
|
||||
}
|
||||
intent := Intent{
|
||||
Kind: ev.Kind,
|
||||
IdempotencyKey: ev.IdempotencyKey,
|
||||
Recipients: ev.Recipients,
|
||||
Payload: ev.Payload,
|
||||
}
|
||||
_, err := a.svc.Submit(ctx, intent)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user