50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package initialize
|
|
|
|
import (
|
|
"gitea.pena/PenaSide/treasurer/internal/controller/grpc"
|
|
"gitea.pena/PenaSide/treasurer/internal/controller/http_controllers/payment"
|
|
"gitea.pena/PenaSide/treasurer/internal/controller/http_controllers/yandex"
|
|
"gitea.pena/PenaSide/treasurer/internal/errors"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ControllersDeps struct {
|
|
Logger *zap.Logger
|
|
Services Services
|
|
Repositories Repositories
|
|
}
|
|
|
|
type Controllers struct {
|
|
YandexStatusREST *yandex.YandexStatusController
|
|
PaymentGRPC *grpc.PaymentController
|
|
PaymentRest *payment.PaymentController
|
|
}
|
|
|
|
func NewControllers(deps ControllersDeps) (*Controllers, errors.Error) {
|
|
yandexStatusControllerREST, err := yandex.NewYandexStatusController(yandex.YandexStatusControllerDeps{
|
|
Logger: deps.Logger,
|
|
StatusService: deps.Services.Status,
|
|
CallbackService: deps.Services.Callback,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
paymentControllerGRPC, err := grpc.NewPaymentController(grpc.PaymentControllerDeps{
|
|
Logger: deps.Logger,
|
|
PaymentProviders: deps.Services.PaymentProviders,
|
|
PaymentMethodRepository: deps.Repositories.PaymentMethod,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
paymentControllerRest := payment.NewPaymentController(deps.Services.PaymentProviders)
|
|
|
|
return &Controllers{
|
|
YandexStatusREST: yandexStatusControllerREST,
|
|
PaymentGRPC: paymentControllerGRPC,
|
|
PaymentRest: paymentControllerRest,
|
|
}, nil
|
|
}
|