fix: nil deps

This commit is contained in:
Kirill 2023-06-14 20:28:43 +03:00
parent d84ff22db4
commit fb9d4d62d7
11 changed files with 117 additions and 122 deletions

@ -32,7 +32,7 @@ services:
- HUBADMIN_MICROSERVICE_TARIFF_URL=http://hub-admin-service:8010/tariff
- CURRENCY_MICROSERVICE_TRANSLATE_URL=http://cbrf-service:8020/translate
- DISCOUNT_MICROSERVICE_GRPC_HOST=discount-service:9040
- PAYMENT_MICROSERVICE_GRPC_HOST=treasurer-service:9040
- PAYMENT_MICROSERVICE_GRPC_HOST=treasurer-service:9085
ports:
- 8082:8082
- 9082:9082

@ -44,12 +44,12 @@ func NewServices(deps ServicesDeps) *Services {
return &Services{
WalletService: walletService,
HistoryService: historyService,
AccountService: account.New(&account.Deps{
AccountService: account.New(account.Deps{
Logger: deps.Logger,
Repository: deps.Repositories.AccountRepository,
AuthClient: deps.Clients.AuthClient,
}),
CurrencyService: currency.New(&currency.Deps{
CurrencyService: currency.New(currency.Deps{
Logger: deps.Logger,
Repository: deps.Repositories.CurrencyRepository,
}),

@ -39,7 +39,7 @@ func NewPaymentClient(deps PaymentClientDeps) *PaymentClient {
}
func (receiver *PaymentClient) GetPaymentLinkBankCard(ctx context.Context, request *treasurer.GetBankCardPaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkBankCard> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -60,7 +60,7 @@ func (receiver *PaymentClient) GetPaymentLinkBankCard(ctx context.Context, reque
}
func (receiver *PaymentClient) GetPaymentLinkYooMoney(ctx context.Context, request *treasurer.GetPaymentLinkBody) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkYooMoney> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -81,7 +81,7 @@ func (receiver *PaymentClient) GetPaymentLinkYooMoney(ctx context.Context, reque
}
func (receiver *PaymentClient) GetPaymentLinkQIWI(ctx context.Context, request *treasurer.GetPhonePaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkQIWI> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -102,7 +102,7 @@ func (receiver *PaymentClient) GetPaymentLinkQIWI(ctx context.Context, request *
}
func (receiver *PaymentClient) GetPaymentLinkSberPay(ctx context.Context, request *treasurer.GetPhonePaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkSberPay> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -123,7 +123,7 @@ func (receiver *PaymentClient) GetPaymentLinkSberPay(ctx context.Context, reques
}
func (receiver *PaymentClient) GetPaymentLinkAlfaClick(ctx context.Context, request *treasurer.GetLoginPaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkAlfaClick> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -144,7 +144,7 @@ func (receiver *PaymentClient) GetPaymentLinkAlfaClick(ctx context.Context, requ
}
func (receiver *PaymentClient) GetPaymentLinkTinkoff(ctx context.Context, request *treasurer.GetPaymentLinkBody) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkTinkoff> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -165,7 +165,7 @@ func (receiver *PaymentClient) GetPaymentLinkTinkoff(ctx context.Context, reques
}
func (receiver *PaymentClient) GetPaymentLinkSberbankB2B(ctx context.Context, request *treasurer.GetB2BPaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkSberbankB2B> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -186,7 +186,7 @@ func (receiver *PaymentClient) GetPaymentLinkSberbankB2B(ctx context.Context, re
}
func (receiver *PaymentClient) GetPaymentLinkMobile(ctx context.Context, request *treasurer.GetPhonePaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkMobile> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -207,7 +207,7 @@ func (receiver *PaymentClient) GetPaymentLinkMobile(ctx context.Context, request
}
func (receiver *PaymentClient) GetPaymentLinkCash(ctx context.Context, request *treasurer.GetPhonePaymentLinkRequest) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkCash> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -228,7 +228,7 @@ func (receiver *PaymentClient) GetPaymentLinkCash(ctx context.Context, request *
}
func (receiver *PaymentClient) GetPaymentLinkInstallments(ctx context.Context, request *treasurer.GetPaymentLinkBody) (string, errors.Error) {
client, closeConnection, connectErr := receiver.connect()
client, closeConnection, connectErr := receiver.connect(ctx)
if connectErr != nil {
receiver.logger.Error("failed to connect on <GetPaymentLinkInstallments> of <PaymentClient>", zap.Error(connectErr))
return "", errors.New(fmt.Errorf("failed connect to payment service: %w", connectErr), errors.ErrInternalError)
@ -248,8 +248,8 @@ func (receiver *PaymentClient) GetPaymentLinkInstallments(ctx context.Context, r
return response.RedirectURL, nil
}
func (receiver *PaymentClient) connect() (treasurer.TreasurerServiceClient, func(), errors.Error) {
connection, err := grpc.Dial(receiver.paymentServiceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))
func (receiver *PaymentClient) connect(ctx context.Context) (treasurer.TreasurerServiceClient, func(), errors.Error) {
connection, err := grpc.DialContext(ctx, receiver.paymentServiceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
receiver.logger.Error("failed connect to payment service no <connect> of <PaymentClient>",
zap.Error(err),

@ -4,6 +4,7 @@ import (
"context"
"fmt"
"net"
"time"
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
@ -41,7 +42,7 @@ func NewGRPC(deps DepsGRPC) (*GRPC, errors.Error) {
))
return &GRPC{
grpc: grpc.NewServer(grpcStreamInterceptor, grpcUnaryInterceptor),
grpc: grpc.NewServer(grpcStreamInterceptor, grpcUnaryInterceptor, grpc.ConnectionTimeout(5*time.Second)),
logger: deps.Logger,
}, nil
}

@ -52,8 +52,9 @@ func NewHTTP(deps DepsHTTP) (*HTTP, errors.Error) {
server: &http.Server{
Handler: echo,
MaxHeaderBytes: 1 << 20,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
ReadTimeout: 20 * time.Second,
WriteTimeout: 20 * time.Second,
IdleTimeout: 20 * time.Second,
},
}, nil
}

@ -36,11 +36,7 @@ type Service struct {
authClient authClient
}
func New(deps *Deps) *Service {
if deps == nil {
log.Panicln("deps is nil on <New (account service)>")
}
func New(deps Deps) *Service {
if deps.Logger == nil {
log.Panicln("logger is nil on <New (account service)>")
}

@ -25,11 +25,7 @@ type Service struct {
repository currencyRepository
}
func New(deps *Deps) *Service {
if deps == nil {
log.Panicln("deps is nil on <New (currency service)>")
}
func New(deps Deps) *Service {
if deps.Logger == nil {
log.Panicln("logger is nil on <New (currency service)>")
}

@ -59,9 +59,10 @@ func New(deps Deps) *Service {
}
return &Service{
logger: deps.Logger,
paymentClient: deps.PaymentClient,
authClient: deps.AuthClient,
logger: deps.Logger,
paymentClient: deps.PaymentClient,
authClient: deps.AuthClient,
configurationGRPC: deps.ConfigurationGRPC,
}
}

@ -65,12 +65,12 @@ type ServerInterface interface {
// Публикация лога в истории
// (POST /history)
Add2history(ctx echo.Context) error
// Запрос на получение ссылки на оплату
// (GET /wallet)
RequestMoney(ctx echo.Context) error
// Изменить валюту кошелька
// (PATCH /wallet)
ChangeCurrency(ctx echo.Context) error
// Запрос на получение ссылки на оплату
// (POST /wallet)
RequestMoney(ctx echo.Context) error
}
// ServerInterfaceWrapper converts echo contexts to parameters.
@ -306,17 +306,6 @@ func (w *ServerInterfaceWrapper) Add2history(ctx echo.Context) error {
return err
}
// RequestMoney converts echo context to params.
func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{""})
// Invoke the callback with all the unmarshalled arguments
err = w.Handler.RequestMoney(ctx)
return err
}
// ChangeCurrency converts echo context to params.
func (w *ServerInterfaceWrapper) ChangeCurrency(ctx echo.Context) error {
var err error
@ -328,6 +317,17 @@ func (w *ServerInterfaceWrapper) ChangeCurrency(ctx echo.Context) error {
return err
}
// RequestMoney converts echo context to params.
func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error {
var err error
ctx.Set(BearerScopes, []string{""})
// Invoke the callback with all the unmarshalled arguments
err = w.Handler.RequestMoney(ctx)
return err
}
// This is a simple interface which specifies echo.Route addition functions which
// are present on both echo.Echo and echo.Group, since we want to allow using
// either of them for path registration
@ -371,81 +371,81 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
router.PUT(baseURL+"/currencies", wrapper.UpdateCurrencies)
router.GET(baseURL+"/history", wrapper.GetHistory)
router.POST(baseURL+"/history", wrapper.Add2history)
router.GET(baseURL+"/wallet", wrapper.RequestMoney)
router.PATCH(baseURL+"/wallet", wrapper.ChangeCurrency)
router.POST(baseURL+"/wallet", wrapper.RequestMoney)
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"//+4rEyOO0oAAA==",
"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",
"yHzPPEoAAA==",
}
// GetSwagger returns the content of the embedded swagger specification file

@ -184,6 +184,11 @@ type Add2historyJSONBody struct {
UserId string `json:"userId"`
}
// ChangeCurrencyJSONBody defines parameters for ChangeCurrency.
type ChangeCurrencyJSONBody struct {
Currency string `json:"currency"`
}
// RequestMoneyJSONBody defines parameters for RequestMoney.
type RequestMoneyJSONBody struct {
Amount int `json:"amount"`
@ -197,11 +202,6 @@ type RequestMoneyJSONBody struct {
Type PaymentType `json:"type"`
}
// ChangeCurrencyJSONBody defines parameters for ChangeCurrency.
type ChangeCurrencyJSONBody struct {
Currency string `json:"currency"`
}
// ChangeAccountJSONRequestBody defines body for ChangeAccount for application/json ContentType.
type ChangeAccountJSONRequestBody = Name
@ -214,8 +214,8 @@ type UpdateCurrenciesJSONRequestBody = UpdateCurrenciesJSONBody
// Add2historyJSONRequestBody defines body for Add2history for application/json ContentType.
type Add2historyJSONRequestBody Add2historyJSONBody
// RequestMoneyJSONRequestBody defines body for RequestMoney for application/json ContentType.
type RequestMoneyJSONRequestBody RequestMoneyJSONBody
// ChangeCurrencyJSONRequestBody defines body for ChangeCurrency for application/json ContentType.
type ChangeCurrencyJSONRequestBody ChangeCurrencyJSONBody
// RequestMoneyJSONRequestBody defines body for RequestMoney for application/json ContentType.
type RequestMoneyJSONRequestBody RequestMoneyJSONBody

@ -462,7 +462,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/Error"
get:
post:
tags:
- wallet
summary: Запрос на получение ссылки на оплату