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 }