amazon events published as server side event
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package sse
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"ruben/inventory2/domains/raw_events"
|
||||
)
|
||||
|
||||
type (
|
||||
DBEventPublisher struct {
|
||||
queue sender
|
||||
getAccountID func(context.Context, raw_events.Event) (int64, error)
|
||||
getEventType func(acctID int64, e raw_events.Event) (string, error)
|
||||
}
|
||||
)
|
||||
|
||||
func (q *Queue) NewDBEventPublisher(
|
||||
getAccountID func(context.Context, raw_events.Event) (int64, error),
|
||||
getEventType func(acctID int64, e raw_events.Event) (string, error),
|
||||
) *DBEventPublisher {
|
||||
return &DBEventPublisher{
|
||||
queue: q,
|
||||
getAccountID: getAccountID,
|
||||
getEventType: getEventType,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *DBEventPublisher) Notify(ctx context.Context, e raw_events.Event) error {
|
||||
acctID, err := p.getAccountID(ctx, e)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get account id: %w", err)
|
||||
}
|
||||
|
||||
et, err := p.getEventType(acctID, e)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to compute event type: %w", err)
|
||||
}
|
||||
|
||||
if err := p.queue.Send(ctx, StandardEvent(acctID, et)); err != nil {
|
||||
return fmt.Errorf("failed to send sse event to listener: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user