customer/internal/initialize/controllers.go

139 lines
5.7 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_admin"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/account_client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/cart_client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/currency_admin"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/currency_client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/history_admin"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/history_client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/controller/http/wallet_client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
2023-06-22 09:36:43 +00:00
)
type RpcControllersDeps struct {
2024-05-26 13:05:49 +00:00
Logger *zap.Logger
Services *Services
Repositories *Repositories
2024-06-10 10:16:24 +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,
2024-05-26 13:05:49 +00:00
AccountRepo: deps.Repositories.AccountRepository,
2023-06-22 09:36:43 +00:00
}),
}
}
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 {
AccountClientController *account_client.AccountController
AccountAdminController *account_admin.AccountInternalController
CartClientController *cart_client.CartController
CurrencyClientController *currency_client.CurrencyController
CurrencyAdminController *currency_admin.CurrencyController
HistoryAdminController *history_admin.HistoryController
HistoryClientController *history_client.HistoryController
WalletClientController *wallet_client.WalletController
}
func NewHttpControllers(deps HttpControllersDeps) *HttpController {
return &HttpController{
AccountClientController: account_client.NewAccountController(account_client.Deps{
MiddleWare: deps.MiddleWare,
AccountRepo: deps.Repositories.AccountRepository,
Logger: deps.Logger,
Encrypt: deps.Encrypt,
AuthClient: deps.Clients.AuthClient,
}),
AccountAdminController: account_admin.NewAccountInternalController(
account_admin.Deps{
2024-06-10 10:16:24 +00:00
MiddleWare: deps.MiddleWare,
AccountRepo: deps.Repositories.AccountRepository,
Logger: deps.Logger,
}),
CartClientController: cart_client.NewCartController(cart_client.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,
}),
CurrencyClientController: currency_client.NewCurrencyController(currency_client.Deps{
CurrencyRepo: deps.Repositories.CurrencyRepository,
MiddleWare: deps.MiddleWare,
Logger: deps.Logger,
}),
CurrencyAdminController: currency_admin.NewCurrencyController(currency_admin.Deps{
CurrencyRepo: deps.Repositories.CurrencyRepository,
MiddleWare: deps.MiddleWare,
Logger: deps.Logger,
}),
HistoryAdminController: history_admin.NewHistoryController(history_admin.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,
}),
HistoryClientController: history_client.NewHistoryController(history_client.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,
}),
WalletClientController: wallet_client.NewWalletController(wallet_client.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,
TelegramClient: deps.Clients.TelegramClient,
}),
}
}