Files
go-caatsm/pkg/di/init_manual.go
T

61 lines
1.3 KiB
Go

package di
import (
"caatsm/internal/adapter/parser"
"caatsm/internal/app"
"caatsm/internal/infra/config"
"caatsm/internal/infra/log"
"caatsm/internal/infra/nats"
"caatsm/internal/infra/postgres"
"errors"
)
// InitializeAppWithConfig wires dependencies using the provided config.
func InitializeAppWithConfig(cfg *config.Config) (*app.MessageProcessor, *nats.Consumer, error) {
if cfg == nil {
return nil, nil, errors.New("config is required")
}
logger, err := log.ProvideLogger(cfg)
if err != nil {
return nil, nil, err
}
pool, err := postgres.ProvideDB(cfg)
if err != nil {
return nil, nil, err
}
repo, err := postgres.ProvideRepository(pool, logger)
if err != nil {
return nil, nil, err
}
conn, err := nats.ProvideNATSConn(cfg, logger)
{
if err != nil {
return nil, nil, err
}
}
js, err := nats.ProvideJetStream(conn, cfg, logger)
if err != nil {
return nil, nil, err
}
publisher, err := nats.ProvidePublisher(js, cfg, logger)
if err != nil {
return nil, nil, err
}
messageParser := parser.ProvideParser()
processor := app.NewMessageProcessor(messageParser, repo, publisher, logger)
consumer, err := nats.ProvideConsumer(conn, js, processor, cfg, logger)
if err != nil {
return nil, nil, err
}
return processor, consumer, nil
}