Files
supply-intelligence/internal/poller/gateway_package_poller.go
2026-05-07 10:16:46 +08:00

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
}