From dab87cc03bff22b727ee883bc7ac958172cd482b Mon Sep 17 00:00:00 2001 From: James Reategui Date: Fri, 13 Jun 2025 09:58:44 -0400 Subject: [PATCH] remove use of mediator for vin decoding grpc calls --- internal/api/api.go | 11 ++++++----- internal/api/grpc_server.go | 7 +++++-- internal/api/grpc_vin_decoder_service.go | 19 +++++++++++-------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/internal/api/api.go b/internal/api/api.go index b1f9bfdc..0f65945e 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -81,6 +81,9 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings, logger.Fatal().Err(err).Send() } + decodeVINHandler := queries.NewDecodeVINQueryHandler(pdb.DBS, vincDecodingService, vinRepository, &logger, fuelAPIService, powerTrainTypeService, ddOnChainService, identityAPI) + upsertVINHandler := queries.NewUpsertDecodingQueryHandler(pdb.DBS, &logger, ddOnChainService) + //custom commands m, _ := mediator.New( //mediator.WithBehaviour(common.NewLoggingBehavior(&logger, settings)), @@ -106,9 +109,6 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings, mediator.WithHandler(&commands.DeleteDeviceTypeCommand{}, commands.NewDeleteDeviceTypeCommandHandler(pdb.DBS)), mediator.WithHandler(&queries.GetIntegrationOptionsQuery{}, queries.NewGetIntegrationOptionsQueryHandler(pdb.DBS)), - - mediator.WithHandler(&queries.DecodeVINQuery{}, queries.NewDecodeVINQueryHandler(pdb.DBS, vincDecodingService, vinRepository, &logger, fuelAPIService, powerTrainTypeService, ddOnChainService, identityAPI)), - mediator.WithHandler(&commands.BulkValidateVinCommand{}, commands.NewBulkValidateVinCommandHandler( pdb.DBS, queries.NewDecodeVINQueryHandler(pdb.DBS, vincDecodingService, vinRepository, &logger, fuelAPIService, powerTrainTypeService, ddOnChainService, identityAPI), @@ -123,7 +123,8 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings, mediator.WithHandler(&queries.GetDeviceDefinitionByIDQueryV2{}, queries.NewGetDeviceDefinitionByIDQueryV2Handler(ddOnChainService, pdb.DBS)), mediator.WithHandler(&queries.GetVINProfileQuery{}, queries.NewGetVINProfileQueryHandler(pdb.DBS, &logger)), - mediator.WithHandler(&queries.UpsertDecodingQuery{}, queries.NewUpsertDecodingQueryHandler(pdb.DBS, &logger, ddOnChainService)), + mediator.WithHandler(&queries.DecodeVINQuery{}, decodeVINHandler), + mediator.WithHandler(&queries.UpsertDecodingQuery{}, upsertVINHandler), ) //fiber @@ -150,7 +151,7 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings, app.Get("/v1/swagger/*", swagger.HandlerDefault) - go StartGrpcServer(logger, settings, *m, pdb.DBS, ddOnChainService, registryInstance, identityAPI) + go StartGrpcServer(logger, settings, *m, pdb.DBS, ddOnChainService, registryInstance, identityAPI, &decodeVINHandler, &upsertVINHandler) // Start Server from a different go routine go func() { diff --git a/internal/api/grpc_server.go b/internal/api/grpc_server.go index ca613559..cbcbc803 100644 --- a/internal/api/grpc_server.go +++ b/internal/api/grpc_server.go @@ -3,6 +3,8 @@ package api import ( "net" + "github.com/DIMO-Network/device-definitions-api/internal/core/queries" + "github.com/DIMO-Network/device-definitions-api/internal/contracts" "github.com/DIMO-Network/device-definitions-api/internal/infrastructure/gateways" @@ -24,7 +26,8 @@ import ( ) func StartGrpcServer(logger zerolog.Logger, s *config.Settings, m mediator.Mediator, dbs func() *db.ReaderWriter, - onChainDeviceDefs gateways.DeviceDefinitionOnChainService, registryInstance *contracts.Registry, identity gateways.IdentityAPI) { + onChainDeviceDefs gateways.DeviceDefinitionOnChainService, registryInstance *contracts.Registry, identity gateways.IdentityAPI, + decodeVINHandler *queries.DecodeVINQueryHandler, upsertVINHandler *queries.UpsertDecodingQueryHandler) { lis, err := net.Listen("tcp", ":"+s.GRPCPort) if err != nil { logger.Fatal().Msgf("Failed to listen on port %v: %v", s.GRPCPort, err) @@ -32,7 +35,7 @@ func StartGrpcServer(logger zerolog.Logger, s *config.Settings, m mediator.Media deviceDefinitionService := NewGrpcService(m, &logger, dbs, onChainDeviceDefs, registryInstance, identity) integrationService := NewGrpcIntegrationService(m, &logger) - decodeService := NewGrpcVinDecoderService(m, &logger) + decodeService := NewGrpcVinDecoderService(&logger, decodeVINHandler, upsertVINHandler) logger.Info().Msgf("Starting gRPC server on port %s", s.GRPCPort) gp := common.GrpcConfig{Logger: &logger} diff --git a/internal/api/grpc_vin_decoder_service.go b/internal/api/grpc_vin_decoder_service.go index 7db34e8c..1d7c120c 100644 --- a/internal/api/grpc_vin_decoder_service.go +++ b/internal/api/grpc_vin_decoder_service.go @@ -5,7 +5,6 @@ import ( "google.golang.org/protobuf/types/known/emptypb" - "github.com/DIMO-Network/device-definitions-api/internal/core/mediator" "github.com/DIMO-Network/device-definitions-api/internal/core/queries" p_grpc "github.com/DIMO-Network/device-definitions-api/pkg/grpc" "github.com/rs/zerolog" @@ -13,21 +12,25 @@ import ( type GrpcVinDecoderService struct { p_grpc.VinDecoderServiceServer - Mediator mediator.Mediator - logger *zerolog.Logger + logger *zerolog.Logger + decodeVINHandler *queries.DecodeVINQueryHandler + upsertVINHandler *queries.UpsertDecodingQueryHandler } -func NewGrpcVinDecoderService(mediator mediator.Mediator, logger *zerolog.Logger) p_grpc.VinDecoderServiceServer { - return &GrpcVinDecoderService{Mediator: mediator, logger: logger} +func NewGrpcVinDecoderService(logger *zerolog.Logger, decodeVINHandler *queries.DecodeVINQueryHandler, + upsertVINHandler *queries.UpsertDecodingQueryHandler) p_grpc.VinDecoderServiceServer { + return &GrpcVinDecoderService{logger: logger, decodeVINHandler: decodeVINHandler, upsertVINHandler: upsertVINHandler} } func (s *GrpcVinDecoderService) DecodeVin(ctx context.Context, in *p_grpc.DecodeVinRequest) (*p_grpc.DecodeVinResponse, error) { - qryResult, err := s.Mediator.Send(ctx, &queries.DecodeVINQuery{ + qry := queries.DecodeVINQuery{ VIN: in.Vin, KnownModel: in.KnownModel, KnownYear: in.KnownYear, Country: in.Country, - }) + } + qryResult, err := s.decodeVINHandler.Handle(ctx, &qry) // todo change Handle to require the actual type not mediator message + // todo change handler to return p_grpc.DecodeVinResponse? But would need to change other places too if err != nil { return nil, err } @@ -38,7 +41,7 @@ func (s *GrpcVinDecoderService) DecodeVin(ctx context.Context, in *p_grpc.Decode } func (s *GrpcVinDecoderService) UpsertDecoding(ctx context.Context, in *p_grpc.UpsertDecodingRequest) (*emptypb.Empty, error) { - _, err := s.Mediator.Send(ctx, &queries.UpsertDecodingQuery{ + _, err := s.upsertVINHandler.Handle(ctx, &queries.UpsertDecodingQuery{ VIN: in.Vin, DefinitionID: in.TargetDefinitionId, })