Skip to content

Commit 8e2ec6e

Browse files
committed
handle issue with dd not found from vin
1 parent d1f0c36 commit 8e2ec6e

4 files changed

Lines changed: 27 additions & 23 deletions

File tree

internal/core/commands/create_dd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (ch CreateDeviceDefinitionCommandHandler) Handle(ctx context.Context, query
136136
Metadata: common.ConvertDeviceTypeAttrsToDefinitionMetadata(command.DeviceAttributes),
137137
}
138138

139-
create, err := ch.onChainSvc.Create(ctx, *dm, ddTbl)
139+
create, err := ch.onChainSvc.Create(ctx, command.Make, ddTbl)
140140
if err != nil {
141141
return nil, err // todo does mediator eat this error?
142142
}

internal/core/queries/decode_vin.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func NewDecodeVINQueryHandler(dbs func() *db.ReaderWriter, vinDecodingService se
7373

7474
func (dc DecodeVINQueryHandler) Handle(ctx context.Context, query mediator.Message) (interface{}, error) {
7575
qry := query.(*DecodeVINQuery)
76-
if !(len(qry.VIN) >= 13 && len(qry.VIN) <= 17) {
76+
if len(qry.VIN) < 13 || len(qry.VIN) > 17 {
7777
return nil, &exceptions.ValidationError{Err: fmt.Errorf("invalid vin %s", qry.VIN)}
7878
}
7979
resp := &p_grpc.DecodeVinResponse{}
@@ -296,7 +296,7 @@ func (dc DecodeVINQueryHandler) Handle(ctx context.Context, query mediator.Messa
296296
// todo load up some metadata from what was decoded. Powertrain too
297297
md := resolveMetadataFromInfo(resp.Powertrain, vinInfo)
298298

299-
trx, err := dc.deviceDefinitionOnChainService.Create(ctx, *dbWMI.R.DeviceMake, coremodels.DeviceDefinitionTablelandModel{
299+
trx, err := dc.deviceDefinitionOnChainService.Create(ctx, resp.Manufacturer, coremodels.DeviceDefinitionTablelandModel{
300300
ID: tid,
301301
KSUID: ksuid.New().String(),
302302
Model: resp.Model,
@@ -360,6 +360,7 @@ func (dc DecodeVINQueryHandler) hydrateResponseFromVinNumber(vn *models.VinNumbe
360360
}
361361
// call on-chain svc to get the DD and pull out the powertrain
362362
pt := ""
363+
trx := ""
363364
tblDef, manufID, err := dc.deviceDefinitionOnChainService.GetDefinitionByID(context.Background(), vn.DefinitionID, dc.dbs().Reader)
364365
if err == nil && tblDef != nil {
365366
for _, attribute := range tblDef.Metadata.DeviceAttributes {
@@ -371,6 +372,9 @@ func (dc DecodeVINQueryHandler) hydrateResponseFromVinNumber(vn *models.VinNumbe
371372
makeName, _ := dc.deviceDefinitionOnChainService.GetManufacturerNameByID(context.Background(), manufID)
372373
pt, _ = dc.powerTrainTypeService.ResolvePowerTrainType(shared.SlugString(makeName), shared.SlugString(tblDef.Model), null.JSON{}, null.JSON{})
373374
}
375+
} else {
376+
// this is not good, somehow it got decoded in past without it being created on tableland
377+
dc.logger.Warn().Msgf("vin decoded for unexistent device definition: %s, vin: %s", vn.DefinitionID, vn.Vin)
374378
}
375379

376380
resp := &p_grpc.DecodeVinResponse{
@@ -380,6 +384,7 @@ func (dc DecodeVINQueryHandler) hydrateResponseFromVinNumber(vn *models.VinNumbe
380384
Source: vn.DecodeProvider.String,
381385
DefinitionId: vn.DefinitionID,
382386
Powertrain: pt,
387+
NewTrxHash: trx,
383388
}
384389

385390
return resp

internal/infrastructure/gateways/device_definition_on_chain_service.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type DeviceDefinitionOnChainService interface {
5353
GetDefinitionByID(ctx context.Context, ID string, reader *db.DB) (*models2.DeviceDefinitionTablelandModel, *big.Int, error)
5454
GetDefinitionTableland(ctx context.Context, manufacturerID *big.Int, ID string) (*models2.DeviceDefinitionTablelandModel, error)
5555
GetDeviceDefinitions(ctx context.Context, manufacturerID types.NullDecimal, ID string, model string, year int, pageIndex, pageSize int32) ([]models2.DeviceDefinitionTablelandModel, error)
56-
Create(ctx context.Context, mk models.DeviceMake, dd models2.DeviceDefinitionTablelandModel) (*string, error)
56+
Create(ctx context.Context, manufacturerName string, dd models2.DeviceDefinitionTablelandModel) (*string, error)
5757
Update(ctx context.Context, manufacturerName string, input contracts.DeviceDefinitionUpdateInput) (*string, error)
5858
Delete(ctx context.Context, manufacturerName, id string) (*string, error)
5959
QueryDefinitionsCustom(ctx context.Context, manufacturerID int, whereClause string, pageIndex int) ([]models2.DeviceDefinitionTablelandModel, error)
@@ -298,7 +298,7 @@ const (
298298
)
299299

300300
// Create does a create for tableland, on-chain operation - checks if already exists, inserts transaction in db. returns the onchain transaction
301-
func (e *deviceDefinitionOnChainService) Create(ctx context.Context, mk models.DeviceMake, dd models2.DeviceDefinitionTablelandModel) (*string, error) {
301+
func (e *deviceDefinitionOnChainService) Create(ctx context.Context, manufacturerName string, dd models2.DeviceDefinitionTablelandModel) (*string, error) {
302302

303303
metrics.Success.With(prometheus.Labels{"method": TablelandRequests}).Inc()
304304
e.logger.Info().Msgf("OnChain Start Create for device definition %s. EthereumSendTransaction %t. payload: %+v", dd.ID, e.settings.EthereumSendTransaction, dd)
@@ -349,11 +349,11 @@ func (e *deviceDefinitionOnChainService) Create(ctx context.Context, mk models.D
349349
}
350350

351351
// Validate if manufacturer exists
352-
bigManufID, err := queryInstance.GetManufacturerIdByName(&bind.CallOpts{Context: ctx, Pending: true}, mk.Name)
352+
bigManufID, err := queryInstance.GetManufacturerIdByName(&bind.CallOpts{Context: ctx, Pending: true}, manufacturerName)
353353
if err != nil {
354354
e.logger.Err(err).Msgf("OnChainError - %s", dd.ID)
355355
metrics.InternalError.With(prometheus.Labels{"method": TablelandErrors}).Inc()
356-
return nil, fmt.Errorf("failed get GetManufacturerIdByName => %s: %w", mk.Name, err)
356+
return nil, fmt.Errorf("failed get GetManufacturerIdByName => %s: %w", manufacturerName, err)
357357
}
358358
instance, err := contracts.NewRegistryTransactor(contractAddress, e.client)
359359
if err != nil {

internal/infrastructure/gateways/mocks/device_definition_on_chain_service_mock.go

Lines changed: 15 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)