File size: 6,795 Bytes
b47934a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | //go:build wireinject
// +build wireinject
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")
}
|