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 }