package ingest import ( "context" "time" "github.com/nats-io/nats.go" "github.com/tech/sendico/edge/callbacks/internal/events" "github.com/tech/sendico/edge/callbacks/internal/storage" "github.com/tech/sendico/edge/callbacks/internal/subscriptions" "github.com/tech/sendico/pkg/mlogger" ) // Observer captures ingest metrics. type Observer interface { ObserveIngest(result string, duration time.Duration) } // Config contains JetStream ingest settings. type Config struct { Stream string Subject string Durable string BatchSize int FetchTimeout time.Duration IdleSleep time.Duration } // Dependencies configure the ingest service. type Dependencies struct { Logger mlogger.Logger JetStream nats.JetStreamContext Config Config Events events.Service Resolver subscriptions.Resolver InboxRepo storage.InboxRepo TaskRepo storage.TaskRepo TaskDefaults storage.TaskDefaults Observer Observer } // Service runs JetStream ingest workers. type Service interface { Start(ctx context.Context) Stop() } // New creates ingest service. func New(deps Dependencies) (Service, error) { return newService(deps) }