package initialize import ( "go.uber.org/zap" "gitea.pena/PenaSide/treasurer/internal/errors" "gitea.pena/PenaSide/treasurer/internal/interface/controller/grpc" "gitea.pena/PenaSide/treasurer/internal/interface/controller/rest" ) type ControllersDeps struct { Logger *zap.Logger Services Services } type Controllers struct { CommonREST *rest.CommonController YandexStatusREST *rest.YandexStatusController PaymentGRPC *grpc.PaymentController } func NewControllers(deps ControllersDeps) (*Controllers, errors.Error) { commonControllerREST, err := rest.NewCommonController(rest.CommonControllerDeps{ Logger: deps.Logger, PaymentService: deps.Services.Payment, }) if err != nil { return nil, err } yandexStatusControllerREST, err := rest.NewYandexStatusController(rest.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, PaymentService: deps.Services.Payment, }) if err != nil { return nil, err } return &Controllers{ CommonREST: commonControllerREST, YandexStatusREST: yandexStatusControllerREST, PaymentGRPC: paymentControllerGRPC, }, nil }