Skip to content

Commit 0271ab8

Browse files
committed
call identity when get manufacturer for reliability
1 parent 17c359a commit 0271ab8

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

internal/infrastructure/gateways/device_definition_on_chain_service.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"database/sql"
77
"encoding/json"
88
"fmt"
9+
stringutils "github.com/DIMO-Network/shared/pkg/strings"
910
"io"
1011
"math/big"
1112
"net/http"
@@ -163,7 +164,7 @@ func (e *deviceDefinitionOnChainService) GetManufacturer(ctx context.Context, ma
163164
// GetDefinitionTableland gets dd from tableland with a select statement and returns tbl object
164165
func (e *deviceDefinitionOnChainService) GetDefinitionTableland(ctx context.Context, manufacturerID *big.Int, ID string) (*models2.DeviceDefinitionTablelandModel, error) {
165166
if manufacturerID == nil || manufacturerID.Uint64() == 0 {
166-
return nil, fmt.Errorf("manufacturerID cannot be 0")
167+
return nil, fmt.Errorf("GetDefinitionTableland - manufacturerID cannot be 0")
167168
}
168169

169170
tableName, err := e.getTablelandTableName(ctx, manufacturerID)
@@ -341,20 +342,18 @@ func (e *deviceDefinitionOnChainService) Create(ctx context.Context, manufacture
341342
auth.GasPrice = bumpedPrice
342343
auth.From = fromAddress
343344

344-
queryInstance, err := contracts.NewRegistry(contractAddress, e.client)
345+
// call identity instead of the chain since more reliable
346+
manufacturer, err := e.identityAPI.GetManufacturer(stringutils.SlugString(manufacturerName))
345347
if err != nil {
346348
e.logger.Err(err).Msgf("OnChainError - %s", dd.ID)
347349
metrics.InternalError.With(prometheus.Labels{"method": TablelandErrors}).Inc()
348-
return nil, fmt.Errorf("failed create NewRegistry: %w", err)
350+
return nil, fmt.Errorf("failed get manufacturer from identity: %w", err)
349351
}
350-
351-
// Validate if manufacturer exists
352-
bigManufID, err := queryInstance.GetManufacturerIdByName(&bind.CallOpts{Context: ctx, Pending: true}, manufacturerName)
353-
if err != nil {
354-
e.logger.Err(err).Msgf("OnChainError - %s", dd.ID)
355-
metrics.InternalError.With(prometheus.Labels{"method": TablelandErrors}).Inc()
356-
return nil, fmt.Errorf("failed get GetManufacturerIdByName => %s: %w", manufacturerName, err)
352+
if manufacturer == nil {
353+
return nil, fmt.Errorf("manufacturer not found in identity")
357354
}
355+
e.logger.Info().Msgf("manufacturer to create DD with: %+v", manufacturer)
356+
358357
instance, err := contracts.NewRegistryTransactor(contractAddress, e.client)
359358
if err != nil {
360359
e.logger.Err(err).Msgf("OnChainError - %s", dd.ID)
@@ -383,6 +382,8 @@ func (e *deviceDefinitionOnChainService) Create(ctx context.Context, manufacture
383382
deviceInputs.Metadata = string(jsonData)
384383
}
385384

385+
bigManufID := big.NewInt(int64(manufacturer.TokenID))
386+
386387
// check for duplicate create
387388
currentDeviceDefinition, err := e.GetDeviceDefinitionByID(ctx, bigManufID, deviceInputs.Id)
388389
if err != nil {

0 commit comments

Comments
 (0)