customer/internal/initialize/controllers.go

109 lines
4.0 KiB
Go
Raw Normal View History

2023-06-22 09:36:43 +00:00
package initialize
import (
2024-05-23 15:32:44 +00:00
"github.com/themakers/hlog"
2023-06-22 09:36:43 +00:00
"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"
2023-06-22 09:36:43 +00:00
"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"
2023-06-22 09:36:43 +00:00
)
type RpcControllersDeps struct {
2023-06-22 09:36:43 +00:00
Logger *zap.Logger
Services *Services
2024-05-23 15:32:44 +00:00
HLogger hlog.Logger
2023-06-22 09:36:43 +00:00
}
type RpcControllers struct {
2023-06-22 09:36:43 +00:00
PaymentController *payment.Controller
CustomerController *customer.Controller
}
func NewRpcControllers(deps RpcControllersDeps) *RpcControllers {
return &RpcControllers{
2023-06-22 09:36:43 +00:00
PaymentController: payment.New(payment.Deps{
Logger: deps.Logger,
PaymentCallbackService: deps.Services.PaymentCallbackService,
2024-05-23 15:32:44 +00:00
HLogger: deps.HLogger,
2023-06-22 09:36:43 +00:00
}),
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,
}),
}
}