// Code generated by Wire. DO NOT EDIT. //go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject package di import ( "caatsm/internal/adapter/parser" "caatsm/internal/app" "caatsm/internal/infra/config" "caatsm/internal/infra/log" "caatsm/internal/infra/monitoring" "caatsm/internal/infra/nats" "caatsm/internal/infra/postgres" "caatsm/internal/infra/telemetry" "github.com/google/wire" ) // Injectors from wire.go: func buildAppComponents() (*appComponents, error) { parserParser := parser.ProvideParser() configConfig, err := config.ProvideConfig() if err != nil { return nil, err } logger, err := log.ProvideLogger(configConfig) if err != nil { return nil, err } pool, err := postgres.ProvideDB(configConfig, logger) if err != nil { return nil, err } repository, err := postgres.ProvideRepository(pool, logger) if err != nil { return nil, err } conn, err := nats.ProvideNATSConn(configConfig, logger) if err != nil { return nil, err } jetStreamContext, err := nats.ProvideJetStream(conn, configConfig, logger) if err != nil { return nil, err } publisher, err := nats.ProvidePublisher(jetStreamContext, conn, configConfig, logger) if err != nil { return nil, err } recorder := telemetry.ProvideRecorder(configConfig) messageProcessor := app.NewMessageProcessor(parserParser, repository, publisher, recorder, logger) consumer, err := nats.ProvideConsumer(conn, jetStreamContext, messageProcessor, configConfig, recorder, logger) if err != nil { return nil, err } server, err := monitoring.ProvideServer(configConfig, logger, pool, conn) if err != nil { return nil, err } diAppComponents := &appComponents{ Processor: messageProcessor, Consumer: consumer, Monitoring: server, } return diAppComponents, nil } func buildAppComponentsWithConfig(cfg *config.Config) (*appComponents, error) { parserParser := parser.ProvideParser() logger, err := log.ProvideLogger(cfg) if err != nil { return nil, err } pool, err := postgres.ProvideDB(cfg, logger) if err != nil { return nil, err } repository, err := postgres.ProvideRepository(pool, logger) if err != nil { return nil, err } conn, err := nats.ProvideNATSConn(cfg, logger) if err != nil { return nil, err } jetStreamContext, err := nats.ProvideJetStream(conn, cfg, logger) if err != nil { return nil, err } publisher, err := nats.ProvidePublisher(jetStreamContext, conn, cfg, logger) if err != nil { return nil, err } recorder := telemetry.ProvideRecorder(cfg) messageProcessor := app.NewMessageProcessor(parserParser, repository, publisher, recorder, logger) consumer, err := nats.ProvideConsumer(conn, jetStreamContext, messageProcessor, cfg, recorder, logger) if err != nil { return nil, err } server, err := monitoring.ProvideServer(cfg, logger, pool, conn) if err != nil { return nil, err } diAppComponents := &appComponents{ Processor: messageProcessor, Consumer: consumer, Monitoring: server, } return diAppComponents, nil } // wire.go: // InitializeApp initializes the application with all dependencies func InitializeApp() (*app.MessageProcessor, *nats.Consumer, *monitoring.Server, error) { comps, err := buildAppComponents() if err != nil { return nil, nil, nil, err } return comps.Processor, comps.Consumer, comps.Monitoring, nil } // InitializeAppWithConfig wires dependencies using a pre-loaded configuration. func InitializeAppWithConfig(cfg *config.Config) (*app.MessageProcessor, *nats.Consumer, *monitoring.Server, error) { comps, err := buildAppComponentsWithConfig(cfg) if err != nil { return nil, nil, nil, err } return comps.Processor, comps.Consumer, comps.Monitoring, nil } var runtimeSet = wire.NewSet(log.ProvideLogger, postgres.ProvideDB, postgres.ProvideRepository, nats.ProvideNATSConn, nats.ProvideJetStream, nats.ProvidePublisher, parser.ProvideParser, telemetry.ProvideRecorder, app.NewMessageProcessor, nats.ProvideConsumer, monitoring.ProvideServer) type appComponents struct { Processor *app.MessageProcessor Consumer *nats.Consumer Monitoring *monitoring.Server }