| |
| |
|
|
| package main |
|
|
| import ( |
| "context" |
| "log/slog" |
|
|
| "github.com/confluentinc/confluent-kafka-go/v2/kafka" |
| "github.com/google/wire" |
| "go.opentelemetry.io/otel/metric" |
| "go.opentelemetry.io/otel/trace" |
|
|
| "github.com/openmeterio/openmeter/app/common" |
| "github.com/openmeterio/openmeter/app/config" |
| "github.com/openmeterio/openmeter/openmeter/billing/creditgrant" |
| "github.com/openmeterio/openmeter/openmeter/cost" |
| "github.com/openmeterio/openmeter/openmeter/currencies" |
| "github.com/openmeterio/openmeter/openmeter/customer" |
| "github.com/openmeterio/openmeter/openmeter/ent/db" |
| "github.com/openmeterio/openmeter/openmeter/governance" |
| "github.com/openmeterio/openmeter/openmeter/ingest" |
| "github.com/openmeterio/openmeter/openmeter/ingest/kafkaingest" |
| "github.com/openmeterio/openmeter/openmeter/ledger" |
| "github.com/openmeterio/openmeter/openmeter/ledger/customerbalance" |
| "github.com/openmeterio/openmeter/openmeter/llmcost" |
| "github.com/openmeterio/openmeter/openmeter/meter" |
| "github.com/openmeterio/openmeter/openmeter/meterevent" |
| "github.com/openmeterio/openmeter/openmeter/namespace" |
| "github.com/openmeterio/openmeter/openmeter/notification" |
| "github.com/openmeterio/openmeter/openmeter/portal" |
| "github.com/openmeterio/openmeter/openmeter/productcatalog/addon" |
| "github.com/openmeterio/openmeter/openmeter/productcatalog/feature" |
| "github.com/openmeterio/openmeter/openmeter/productcatalog/plan" |
| "github.com/openmeterio/openmeter/openmeter/productcatalog/planaddon" |
| "github.com/openmeterio/openmeter/openmeter/progressmanager" |
| "github.com/openmeterio/openmeter/openmeter/registry" |
| "github.com/openmeterio/openmeter/openmeter/secret" |
| "github.com/openmeterio/openmeter/openmeter/server" |
| "github.com/openmeterio/openmeter/openmeter/streaming" |
| "github.com/openmeterio/openmeter/openmeter/subject" |
| subjecthooks "github.com/openmeterio/openmeter/openmeter/subject/service/hooks" |
| "github.com/openmeterio/openmeter/openmeter/taxcode" |
| "github.com/openmeterio/openmeter/openmeter/watermill/eventbus" |
| "github.com/openmeterio/openmeter/pkg/featuregate" |
| "github.com/openmeterio/openmeter/pkg/ffx" |
| kafkametrics "github.com/openmeterio/openmeter/pkg/kafka/metrics" |
| ) |
|
|
| type Application struct { |
| common.GlobalInitializer |
| common.Migrator |
|
|
| Addon addon.Service |
| AppRegistry common.AppRegistry |
| Customer customer.Service |
| CustomerLedgerHook common.CustomerLedgerHook |
| CustomerSubjectHook common.CustomerSubjectHook |
| CustomerEntitlementValidatorHook common.CustomerEntitlementValidatorHook |
| BillingRegistry common.BillingRegistry |
| CurrencyService currencies.Service |
| CostService cost.Service |
| CreditGrantService creditgrant.Service |
| Ledger ledger.Ledger |
| AccountResolver ledger.AccountResolver |
| CustomerBalanceFacade *customerbalance.Facade |
| EntClient *db.Client |
| EventPublisher eventbus.Publisher |
| EntitlementRegistry *registry.Entitlement |
| FeatureConnector feature.FeatureConnector |
| FeatureFlags ffx.Service |
| GovernanceService governance.Service |
| IngestCollector ingest.Collector |
| IngestService ingest.Service |
| KafkaProducer *kafka.Producer |
| KafkaMetrics *kafkametrics.Metrics |
| KafkaIngestNamespaceHandler *kafkaingest.NamespaceHandler |
| LedgerNamespaceHandler namespace.Handler |
| LLMCostService llmcost.Service |
| Logger *slog.Logger |
| MetricMeter metric.Meter |
| MeterConfigInitializer common.MeterConfigInitializer |
| MeterManageService meter.ManageService |
| MeterEventService meterevent.Service |
| NamespaceManager *namespace.Manager |
| Notification notification.Service |
| NotificationEventHandler notification.EventHandler |
| Plan plan.Service |
| PlanAddon planaddon.Service |
| Portal portal.Service |
| ProgressManager progressmanager.Service |
| RouterHooks *server.RouterHooks |
| PostAuthMiddlewares server.PostAuthMiddlewares |
| Secret secret.Service |
| SubjectService subject.Service |
| SubjectCustomerHook subjecthooks.CustomerSubjectHook |
| Subscription common.SubscriptionServiceWithWorkflow |
| StreamingConnector streaming.Connector |
| TaxCodeNamespaceHandler *taxcode.NamespaceHandler |
| TaxCodeService taxcode.Service |
| TelemetryServer common.TelemetryServer |
| TerminationChecker *common.TerminationChecker |
| RuntimeMetricsCollector common.RuntimeMetricsCollector |
| Tracer trace.Tracer |
| FeatureGate *featuregate.FeatureGateChecker |
| ClientIPMiddleware common.ClientIPMiddleware |
| } |
|
|
| func initializeApplication(ctx context.Context, conf config.Configuration) (Application, func(), error) { |
| wire.Build( |
| metadata, |
| common.App, |
| common.Billing, |
| common.ClickHouse, |
| common.Config, |
| common.CreditGrant, |
| common.Currency, |
| common.Customer, |
| common.CustomerBalance, |
| common.NewCustomerLedgerServiceHook, |
| common.NewCustomerSubjectServiceHook, |
| common.NewCustomerEntitlementValidatorServiceHook, |
| common.Database, |
| common.Entitlement, |
| common.Framework, |
| common.FFX, |
| common.Governance, |
| common.Kafka, |
| common.KafkaIngest, |
| common.LLMCost, |
| common.LedgerStack, |
| common.KafkaNamespaceResolver, |
| common.MeterManageWithConfigMeters, |
| common.MeterEvent, |
| common.Namespace, |
| common.StaticNamespace, |
| common.NewDefaultTextMapPropagator, |
| common.NewKafkaIngestCollector, |
| common.NewIngestCollector, |
| common.NewIngestService, |
| common.NewServerPublisher, |
| common.Notification, |
| common.Streaming, |
| common.Portal, |
| common.ProductCatalog, |
| common.ProgressManager, |
| common.Server, |
| common.TaxCode, |
| common.TaxCodeNamespaceHandler, |
| common.Subscription, |
| common.Lockr, |
| common.Secret, |
| common.ServerProvisionTopics, |
| common.Subject, |
| common.NewSvixAPIClient, |
| common.NewSubjectCustomerHook, |
| common.Telemetry, |
| common.TelemetryLoggerNoAdditionalMiddlewares, |
| common.NewTerminationChecker, |
| common.WatermillNoPublisher, |
| wire.Struct(new(Application), "*"), |
| common.FeatureGateChecker, |
| ) |
|
|
| return Application{}, nil, nil |
| } |
|
|
| func metadata(conf config.Configuration) common.Metadata { |
| return common.NewMetadata(conf, version, "backend") |
| } |
|
|