From 384ac85f1561daa9bab27ff76c92bf74f9a12442 Mon Sep 17 00:00:00 2001 From: Peter Turi Date: Fri, 31 Jan 2025 16:13:32 +0100 Subject: [PATCH] fix: billing dependency cleanup The stripe app service is not required by billing, as it accesses it using the app's registry. The stripe app will need to access billing to trigger actions based on the webhooks, thus we are eliminating a circular dependency. --- app/common/billing.go | 2 -- cmd/billing-worker/wire_gen.go | 56 ++++++++++++++++++---------------- cmd/jobs/internal/wire_gen.go | 2 +- cmd/server/wire_gen.go | 2 +- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/app/common/billing.go b/app/common/billing.go index d1e8f5bf2..bf6306942 100644 --- a/app/common/billing.go +++ b/app/common/billing.go @@ -7,7 +7,6 @@ import ( "github.com/openmeterio/openmeter/app/config" "github.com/openmeterio/openmeter/openmeter/app" - appstripe "github.com/openmeterio/openmeter/openmeter/app/stripe" "github.com/openmeterio/openmeter/openmeter/billing" billingadapter "github.com/openmeterio/openmeter/openmeter/billing/adapter" billingservice "github.com/openmeterio/openmeter/openmeter/billing/service" @@ -41,7 +40,6 @@ func BillingService( logger *slog.Logger, db *entdb.Client, appService app.Service, - appStripeService appstripe.Service, billingAdapter billing.Adapter, billingConfig config.BillingConfiguration, customerService customer.Service, diff --git a/cmd/billing-worker/wire_gen.go b/cmd/billing-worker/wire_gen.go index 160133233..98117fa8e 100644 --- a/cmd/billing-worker/wire_gen.go +++ b/cmd/billing-worker/wire_gen.go @@ -148,6 +148,16 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } + adapter, err := common.BillingAdapter(logger, client) + if err != nil { + cleanup6() + cleanup5() + cleanup4() + cleanup3() + cleanup2() + cleanup() + return Application{}, nil, err + } entitlementsConfiguration := conf.Entitlements aggregationConfiguration := conf.Aggregation clickHouseAggregationConfiguration := aggregationConfiguration.ClickHouse @@ -184,7 +194,8 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - secretserviceService, err := common.NewUnsafeSecretService(logger, client) + featureConnector := common.NewFeatureConnector(logger, client, inMemoryRepository) + billingService, err := common.BillingService(logger, client, service, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) if err != nil { cleanup6() cleanup5() @@ -194,7 +205,8 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - appstripeService, err := common.NewAppStripeService(logger, client, appsConfiguration, service, customerService, secretserviceService) + productCatalogConfiguration := conf.ProductCatalog + planService, err := common.NewPlanService(logger, client, productCatalogConfiguration, featureConnector) if err != nil { cleanup6() cleanup5() @@ -204,7 +216,7 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - adapter, err := common.BillingAdapter(logger, client) + validator, err := common.BillingSubscriptionValidator(billingService, billingConfiguration) if err != nil { cleanup6() cleanup5() @@ -214,8 +226,7 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - featureConnector := common.NewFeatureConnector(logger, client, inMemoryRepository) - billingService, err := common.BillingService(logger, client, service, appstripeService, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) + subscriptionServiceWithWorkflow, err := common.NewSubscriptionServices(logger, client, productCatalogConfiguration, entitlementsConfiguration, featureConnector, entitlement, customerService, planService, eventbusPublisher, validator) if err != nil { cleanup6() cleanup5() @@ -225,8 +236,8 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - productCatalogConfiguration := conf.ProductCatalog - planService, err := common.NewPlanService(logger, client, productCatalogConfiguration, featureConnector) + workerOptions := common.NewBillingWorkerOptions(eventsConfiguration, options, eventbusPublisher, billingService, adapter, subscriptionServiceWithWorkflow, logger) + worker, err := common.NewBillingWorker(workerOptions) if err != nil { cleanup6() cleanup5() @@ -236,18 +247,17 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - validator, err := common.BillingSubscriptionValidator(billingService, billingConfiguration) - if err != nil { - cleanup6() - cleanup5() - cleanup4() - cleanup3() - cleanup2() - cleanup() - return Application{}, nil, err + health := common.NewHealthChecker(logger) + telemetryHandler := common.NewTelemetryHandler(metricsTelemetryConfig, health) + v4, cleanup7 := common.NewTelemetryServer(telemetryConfig, telemetryHandler) + group := common.BillingWorkerGroup(ctx, worker, v4) + runner := common.Runner{ + Group: group, + Logger: logger, } - subscriptionServiceWithWorkflow, err := common.NewSubscriptionServices(logger, client, productCatalogConfiguration, entitlementsConfiguration, featureConnector, entitlement, customerService, planService, eventbusPublisher, validator) + secretserviceService, err := common.NewUnsafeSecretService(logger, client) if err != nil { + cleanup7() cleanup6() cleanup5() cleanup4() @@ -256,9 +266,9 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - workerOptions := common.NewBillingWorkerOptions(eventsConfiguration, options, eventbusPublisher, billingService, adapter, subscriptionServiceWithWorkflow, logger) - worker, err := common.NewBillingWorker(workerOptions) + appstripeService, err := common.NewAppStripeService(logger, client, appsConfiguration, service, customerService, secretserviceService) if err != nil { + cleanup7() cleanup6() cleanup5() cleanup4() @@ -267,14 +277,6 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl cleanup() return Application{}, nil, err } - health := common.NewHealthChecker(logger) - telemetryHandler := common.NewTelemetryHandler(metricsTelemetryConfig, health) - v4, cleanup7 := common.NewTelemetryServer(telemetryConfig, telemetryHandler) - group := common.BillingWorkerGroup(ctx, worker, v4) - runner := common.Runner{ - Group: group, - Logger: logger, - } namespacedTopicResolver, err := common.NewNamespacedTopicResolver(kafkaIngestConfiguration) if err != nil { cleanup7() diff --git a/cmd/jobs/internal/wire_gen.go b/cmd/jobs/internal/wire_gen.go index 19113ab4a..0536149eb 100644 --- a/cmd/jobs/internal/wire_gen.go +++ b/cmd/jobs/internal/wire_gen.go @@ -239,7 +239,7 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl } billingConfiguration := conf.Billing featureConnector := common.NewFeatureConnector(logger, client, inMemoryRepository) - billingService, err := common.BillingService(logger, client, service, appstripeService, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) + billingService, err := common.BillingService(logger, client, service, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) if err != nil { cleanup6() cleanup5() diff --git a/cmd/server/wire_gen.go b/cmd/server/wire_gen.go index a3e71bfc7..e342c33c9 100644 --- a/cmd/server/wire_gen.go +++ b/cmd/server/wire_gen.go @@ -240,7 +240,7 @@ func initializeApplication(ctx context.Context, conf config.Configuration) (Appl } billingConfiguration := conf.Billing featureConnector := common.NewFeatureConnector(logger, client, inMemoryRepository) - billingService, err := common.BillingService(logger, client, service, appstripeService, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) + billingService, err := common.BillingService(logger, client, service, adapter, billingConfiguration, customerService, featureConnector, inMemoryRepository, connector, eventbusPublisher) if err != nil { cleanup6() cleanup5()