package initialize import ( "github.com/themakers/hlog" "go.uber.org/zap" qutils "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/utils" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/broker/tariff" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/grpc/customer" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/grpc/payment" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/account" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/cart" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/currency" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/history" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/wallet" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models" ) type RpcControllersDeps struct { Logger *zap.Logger Services *Services HLogger hlog.Logger } type RpcControllers struct { PaymentController *payment.Controller CustomerController *customer.Controller } func NewRpcControllers(deps RpcControllersDeps) *RpcControllers { return &RpcControllers{ PaymentController: payment.New(payment.Deps{ Logger: deps.Logger, PaymentCallbackService: deps.Services.PaymentCallbackService, HLogger: deps.HLogger, }), CustomerController: customer.New(customer.Deps{ Logger: deps.Logger, HistoryService: deps.Services.HistoryService, }), } } type HttpControllersDeps struct { Encrypt *qutils.Encrypt Producer *tariff.Producer GRPC *models.ConfigurationGRPC MiddleWare *http.MiddleWare Logger *zap.Logger Repositories *Repositories Clients *Clients } type HttpController struct { AccountController *account.AccountController CartController *cart.CartController HistoryController *history.HistoryController WalletController *wallet.WalletController CurrencyController *currency.CurrencyController } func NewHttpControllers(deps HttpControllersDeps) *HttpController { return &HttpController{ AccountController: account.NewAccountController(account.Deps{ MiddleWare: deps.MiddleWare, AccountRepo: deps.Repositories.AccountRepository, Logger: deps.Logger, Encrypt: deps.Encrypt, AuthClient: deps.Clients.AuthClient, }), CartController: cart.NewCartController(cart.Deps{ MiddleWare: deps.MiddleWare, Logger: deps.Logger, AccountRepo: deps.Repositories.AccountRepository, HistoryRepo: deps.Repositories.HistoryRepository, HubAdminClient: deps.Clients.HubadminClient, DiscountClient: deps.Clients.DiscountClient, CurrencyClient: deps.Clients.CurrencyClient, Producer: deps.Producer, }), HistoryController: history.NewHistoryController(history.Deps{ MiddleWare: deps.MiddleWare, HistoryRepo: deps.Repositories.HistoryRepository, AccountRepo: deps.Repositories.AccountRepository, VerifyClient: deps.Clients.VerificationClient, AuthClient: deps.Clients.AuthClient, TemplateClient: deps.Clients.TemplateClient, CodewordClient: deps.Clients.CodewordClient, Logger: deps.Logger, }), WalletController: wallet.NewWalletController(wallet.Deps{ MiddleWare: deps.MiddleWare, AuthClient: deps.Clients.AuthClient, PaymentClient: deps.Clients.PaymentClient, GRPC: deps.GRPC, AccountRepo: deps.Repositories.AccountRepository, CurrencyClient: deps.Clients.CurrencyClient, VerifyClient: deps.Clients.VerificationClient, MailClient: deps.Clients.MailClient, Logger: deps.Logger, }), CurrencyController: currency.NewCurrencyController(currency.Deps{ CurrencyRepo: deps.Repositories.CurrencyRepository, MiddleWare: deps.MiddleWare, Logger: deps.Logger, }), } }