Skip to content

Commit 18dae8f

Browse files
authored
remove use of mediator for vin decoding grpc calls (#294)
1 parent 37215a6 commit 18dae8f

3 files changed

Lines changed: 22 additions & 15 deletions

File tree

internal/api/api.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings,
8181
logger.Fatal().Err(err).Send()
8282
}
8383

84+
decodeVINHandler := queries.NewDecodeVINQueryHandler(pdb.DBS, vincDecodingService, vinRepository, &logger, fuelAPIService, powerTrainTypeService, ddOnChainService, identityAPI)
85+
upsertVINHandler := queries.NewUpsertDecodingQueryHandler(pdb.DBS, &logger, ddOnChainService)
86+
8487
//custom commands
8588
m, _ := mediator.New(
8689
//mediator.WithBehaviour(common.NewLoggingBehavior(&logger, settings)),
@@ -106,9 +109,6 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings,
106109
mediator.WithHandler(&commands.DeleteDeviceTypeCommand{}, commands.NewDeleteDeviceTypeCommandHandler(pdb.DBS)),
107110

108111
mediator.WithHandler(&queries.GetIntegrationOptionsQuery{}, queries.NewGetIntegrationOptionsQueryHandler(pdb.DBS)),
109-
110-
mediator.WithHandler(&queries.DecodeVINQuery{}, queries.NewDecodeVINQueryHandler(pdb.DBS, vincDecodingService, vinRepository, &logger, fuelAPIService, powerTrainTypeService, ddOnChainService, identityAPI)),
111-
112112
mediator.WithHandler(&commands.BulkValidateVinCommand{}, commands.NewBulkValidateVinCommandHandler(
113113
pdb.DBS,
114114
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,
123123
mediator.WithHandler(&queries.GetDeviceDefinitionByIDQueryV2{}, queries.NewGetDeviceDefinitionByIDQueryV2Handler(ddOnChainService, pdb.DBS)),
124124
mediator.WithHandler(&queries.GetVINProfileQuery{}, queries.NewGetVINProfileQueryHandler(pdb.DBS, &logger)),
125125

126-
mediator.WithHandler(&queries.UpsertDecodingQuery{}, queries.NewUpsertDecodingQueryHandler(pdb.DBS, &logger, ddOnChainService)),
126+
mediator.WithHandler(&queries.DecodeVINQuery{}, decodeVINHandler),
127+
mediator.WithHandler(&queries.UpsertDecodingQuery{}, upsertVINHandler),
127128
)
128129

129130
//fiber
@@ -150,7 +151,7 @@ func Run(ctx context.Context, logger zerolog.Logger, settings *config.Settings,
150151

151152
app.Get("/v1/swagger/*", swagger.HandlerDefault)
152153

153-
go StartGrpcServer(logger, settings, *m, pdb.DBS, ddOnChainService, registryInstance, identityAPI)
154+
go StartGrpcServer(logger, settings, *m, pdb.DBS, ddOnChainService, registryInstance, identityAPI, &decodeVINHandler, &upsertVINHandler)
154155

155156
// Start Server from a different go routine
156157
go func() {

internal/api/grpc_server.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package api
33
import (
44
"net"
55

6+
"github.com/DIMO-Network/device-definitions-api/internal/core/queries"
7+
68
"github.com/DIMO-Network/device-definitions-api/internal/contracts"
79

810
"github.com/DIMO-Network/device-definitions-api/internal/infrastructure/gateways"
@@ -24,15 +26,16 @@ import (
2426
)
2527

2628
func StartGrpcServer(logger zerolog.Logger, s *config.Settings, m mediator.Mediator, dbs func() *db.ReaderWriter,
27-
onChainDeviceDefs gateways.DeviceDefinitionOnChainService, registryInstance *contracts.Registry, identity gateways.IdentityAPI) {
29+
onChainDeviceDefs gateways.DeviceDefinitionOnChainService, registryInstance *contracts.Registry, identity gateways.IdentityAPI,
30+
decodeVINHandler *queries.DecodeVINQueryHandler, upsertVINHandler *queries.UpsertDecodingQueryHandler) {
2831
lis, err := net.Listen("tcp", ":"+s.GRPCPort)
2932
if err != nil {
3033
logger.Fatal().Msgf("Failed to listen on port %v: %v", s.GRPCPort, err)
3134
}
3235

3336
deviceDefinitionService := NewGrpcService(m, &logger, dbs, onChainDeviceDefs, registryInstance, identity)
3437
integrationService := NewGrpcIntegrationService(m, &logger)
35-
decodeService := NewGrpcVinDecoderService(m, &logger)
38+
decodeService := NewGrpcVinDecoderService(&logger, decodeVINHandler, upsertVINHandler)
3639

3740
logger.Info().Msgf("Starting gRPC server on port %s", s.GRPCPort)
3841
gp := common.GrpcConfig{Logger: &logger}

internal/api/grpc_vin_decoder_service.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,32 @@ import (
55

66
"google.golang.org/protobuf/types/known/emptypb"
77

8-
"github.com/DIMO-Network/device-definitions-api/internal/core/mediator"
98
"github.com/DIMO-Network/device-definitions-api/internal/core/queries"
109
p_grpc "github.com/DIMO-Network/device-definitions-api/pkg/grpc"
1110
"github.com/rs/zerolog"
1211
)
1312

1413
type GrpcVinDecoderService struct {
1514
p_grpc.VinDecoderServiceServer
16-
Mediator mediator.Mediator
17-
logger *zerolog.Logger
15+
logger *zerolog.Logger
16+
decodeVINHandler *queries.DecodeVINQueryHandler
17+
upsertVINHandler *queries.UpsertDecodingQueryHandler
1818
}
1919

20-
func NewGrpcVinDecoderService(mediator mediator.Mediator, logger *zerolog.Logger) p_grpc.VinDecoderServiceServer {
21-
return &GrpcVinDecoderService{Mediator: mediator, logger: logger}
20+
func NewGrpcVinDecoderService(logger *zerolog.Logger, decodeVINHandler *queries.DecodeVINQueryHandler,
21+
upsertVINHandler *queries.UpsertDecodingQueryHandler) p_grpc.VinDecoderServiceServer {
22+
return &GrpcVinDecoderService{logger: logger, decodeVINHandler: decodeVINHandler, upsertVINHandler: upsertVINHandler}
2223
}
2324

2425
func (s *GrpcVinDecoderService) DecodeVin(ctx context.Context, in *p_grpc.DecodeVinRequest) (*p_grpc.DecodeVinResponse, error) {
25-
qryResult, err := s.Mediator.Send(ctx, &queries.DecodeVINQuery{
26+
qry := queries.DecodeVINQuery{
2627
VIN: in.Vin,
2728
KnownModel: in.KnownModel,
2829
KnownYear: in.KnownYear,
2930
Country: in.Country,
30-
})
31+
}
32+
qryResult, err := s.decodeVINHandler.Handle(ctx, &qry) // todo change Handle to require the actual type not mediator message
33+
// todo change handler to return p_grpc.DecodeVinResponse? But would need to change other places too
3134
if err != nil {
3235
return nil, err
3336
}
@@ -38,7 +41,7 @@ func (s *GrpcVinDecoderService) DecodeVin(ctx context.Context, in *p_grpc.Decode
3841
}
3942

4043
func (s *GrpcVinDecoderService) UpsertDecoding(ctx context.Context, in *p_grpc.UpsertDecodingRequest) (*emptypb.Empty, error) {
41-
_, err := s.Mediator.Send(ctx, &queries.UpsertDecodingQuery{
44+
_, err := s.upsertVINHandler.Handle(ctx, &queries.UpsertDecodingQuery{
4245
VIN: in.Vin,
4346
DefinitionID: in.TargetDefinitionId,
4447
})

0 commit comments

Comments
 (0)