tariffs/pkg/grpc_clients/clients.go

49 lines
1.3 KiB
Go
Raw Normal View History

package grpc_clients
import (
"context"
"gitea.pena/PenaSide/tariffs/internal/proto/tariffs"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
type Deps struct {
Logger *zap.Logger
TariffServiceHost string
}
type TariffGRPCClient struct {
logger *zap.Logger
tariffServiceHost string
}
func NewTariffGRPCClient(deps Deps) *TariffGRPCClient {
return &TariffGRPCClient{
logger: deps.Logger,
tariffServiceHost: deps.TariffServiceHost,
}
}
func (c *TariffGRPCClient) GetTariff(ctx context.Context, id string) (*tariffs.GetTariffResponse, error) {
connection, err := grpc.Dial(c.tariffServiceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
c.logger.Error("failed to connect to TariffService", zap.Error(err), zap.String("tariff_service_host", c.tariffServiceHost))
return nil, err
}
defer func() {
if closeErr := connection.Close(); closeErr != nil {
c.logger.Error("failed to close connection to TariffService", zap.Error(closeErr))
}
}()
client := tariffs.NewTariffServiceClient(connection)
result, err := client.GetTariff(ctx, &tariffs.GetTariffRequest{Id: id})
if err != nil {
c.logger.Error("failed to get tariff", zap.String("id", id), zap.Error(err))
return nil, err
}
return result, nil
}