39 lines
888 B
Go
39 lines
888 B
Go
package poller
|
|
|
|
import (
|
|
"context"
|
|
|
|
"supply-intelligence/internal/gatewayconsumer"
|
|
)
|
|
|
|
type GatewayPackagePoller struct {
|
|
consumer *gatewayconsumer.Service
|
|
cursor string
|
|
}
|
|
|
|
func NewGatewayPackagePoller(consumer *gatewayconsumer.Service) *GatewayPackagePoller {
|
|
return &GatewayPackagePoller{consumer: consumer}
|
|
}
|
|
|
|
func (p *GatewayPackagePoller) PollOnce(ctx context.Context) (gatewayconsumer.ConsumeOnceOutput, error) {
|
|
if p == nil || p.consumer == nil {
|
|
return gatewayconsumer.ConsumeOnceOutput{}, gatewayconsumer.ErrInvalidConsumeInput
|
|
}
|
|
out, err := p.consumer.ConsumeOnce(ctx, gatewayconsumer.ConsumeOnceInput{
|
|
Consumer: "gateway",
|
|
Cursor: p.cursor,
|
|
})
|
|
if err != nil {
|
|
return gatewayconsumer.ConsumeOnceOutput{}, err
|
|
}
|
|
p.cursor = out.NextCursor
|
|
return out, nil
|
|
}
|
|
|
|
func (p *GatewayPackagePoller) Cursor() string {
|
|
if p == nil {
|
|
return ""
|
|
}
|
|
return p.cursor
|
|
}
|