| |
| |
|
|
| package main |
|
|
| import ( |
| "context" |
| "log/slog" |
|
|
| "github.com/google/wire" |
|
|
| "github.com/openmeterio/openmeter/app/common" |
| "github.com/openmeterio/openmeter/app/config" |
| "github.com/openmeterio/openmeter/openmeter/ledger" |
| "github.com/openmeterio/openmeter/openmeter/meter" |
| "github.com/openmeterio/openmeter/openmeter/namespace" |
| "github.com/openmeterio/openmeter/openmeter/streaming" |
| ) |
|
|
| type Application struct { |
| common.GlobalInitializer |
| common.Migrator |
| common.Runner |
|
|
| AppRegistry common.AppRegistry |
| LedgerAccountResolver ledger.AccountResolver |
| Logger *slog.Logger |
| Meter meter.Service |
| RuntimeMetricsCollector common.RuntimeMetricsCollector |
| NamespaceManager *namespace.Manager |
| Streaming streaming.Connector |
| } |
|
|
| func initializeApplication(ctx context.Context, conf config.Configuration) (Application, func(), error) { |
| wire.Build( |
| wire.FieldsOf(new(config.BillingWorkerConfiguration), "ConsumerConfiguration"), |
| wire.FieldsOf(new(config.BillingConfiguration), "Worker"), |
|
|
| metadata, |
| common.BillingWorker, |
| common.ClickHouse, |
| common.Config, |
| common.Database, |
| common.Framework, |
| common.Meter, |
| common.Namespace, |
| common.NewDefaultTextMapPropagator, |
| common.NewKafkaTopicProvisioner, |
| common.ProgressManager, |
| common.Streaming, |
| common.TaxCode, |
| common.Telemetry, |
| common.TelemetryLoggerNoAdditionalMiddlewares, |
| common.Watermill, |
| common.WatermillRouter, |
| wire.Struct(new(Application), "*"), |
| common.FeatureGateChecker, |
| ) |
| return Application{}, nil, nil |
| } |
|
|
| func metadata(conf config.Configuration) common.Metadata { |
| return common.NewMetadata(conf, version, "billing-worker") |
| } |
|
|