Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand All @@ -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),
Expand All @@ -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
Expand All @@ -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() {
Expand Down
7 changes: 5 additions & 2 deletions internal/api/grpc_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -24,15 +26,16 @@ 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)
}

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}
Expand Down
19 changes: 11 additions & 8 deletions internal/api/grpc_vin_decoder_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,32 @@ 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"
)

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
}
Expand All @@ -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,
})
Expand Down
Loading