package initialize import ( "go.uber.org/zap" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/service/account" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/service/cart" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/service/currency" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/service/history" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/service/wallet" ) type ServicesDeps struct { Logger *zap.Logger Repositories *Repositories Clients *Clients } type Services struct { AccountService *account.Service CurrencyService *currency.Service CartService *cart.Service HistoryService *history.Service WalletService *wallet.Service } func NewServices(deps *ServicesDeps) *Services { walletService := wallet.New(&wallet.Deps{ Logger: deps.Logger, Repository: deps.Repositories.AccountRepository, CurrencyClient: deps.Clients.CurrencyClient, }) return &Services{ AccountService: account.New(&account.Deps{ Logger: deps.Logger, Repository: deps.Repositories.AccountRepository, AuthClient: deps.Clients.AuthClient, }), CurrencyService: currency.New(¤cy.Deps{ Logger: deps.Logger, Repository: deps.Repositories.CurrencyRepository, }), CartService: cart.New(&cart.Deps{ Logger: deps.Logger, Repository: deps.Repositories.AccountRepository, HubadminClient: deps.Clients.HubadminClient, DiscountClient: deps.Clients.DiscountClient, WalletService: walletService, }), HistoryService: history.New(&history.Deps{ Logger: deps.Logger, Repository: deps.Repositories.HistoryRepository, }), WalletService: walletService, } }