From 684fe2331b3e646f657e976861d0dad175a10619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Macedo?= Date: Wed, 25 Jan 2023 12:45:52 -0300 Subject: [PATCH] :bug: Fix defaultValues initialization while updating assetType --- assets/dynamicAssetTypeConfig.go | 2 ++ transactions/deleteAssetType.go | 4 +++- transactions/updateAssetType.go | 14 +++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/assets/dynamicAssetTypeConfig.go b/assets/dynamicAssetTypeConfig.go index 2c5c596..e2f6393 100644 --- a/assets/dynamicAssetTypeConfig.go +++ b/assets/dynamicAssetTypeConfig.go @@ -1,5 +1,7 @@ package assets +// ? Is there a way to not allow an asset be modified outside a transaction? + // dynamicAssetTypeConfig is the configuration data for the Dynamic assetTypes feature var dynamicAssetTypeConfig = DynamicAssetType{} diff --git a/transactions/deleteAssetType.go b/transactions/deleteAssetType.go index 0110003..c16f291 100644 --- a/transactions/deleteAssetType.go +++ b/transactions/deleteAssetType.go @@ -10,6 +10,8 @@ import ( sw "github.com/goledgerdev/cc-tools/stubwrapper" ) +// ? Allow delete cascade? + // DeleteAssetType is the transaction which deletes a dynamic Asset Type var DeleteAssetType = Transaction{ Tag: "deleteAssetType", @@ -140,7 +142,7 @@ func handleRegisteredAssets(stub *sw.StubWrapper, tag string, force bool) ([]int _, err = asset.Delete(stub) if err != nil { - return nil, errors.WrapError(err, "could not force delete asset") + return nil, errors.WrapError(err, "could not force delete AssetType assets") } } diff --git a/transactions/updateAssetType.go b/transactions/updateAssetType.go index 7f12e75..5d0e5ee 100644 --- a/transactions/updateAssetType.go +++ b/transactions/updateAssetType.go @@ -307,19 +307,19 @@ func initilizeDefaultValues(stub *sw.StubWrapper, assetTag string, defaultValues return nil, errors.WrapErrorWithStatus(err, "failed to unmarshal queryResponse values", http.StatusInternalServerError) } + for _, propMap := range defaultValuesMap { + propTag := propMap["tag"].(string) + if _, ok := data[propTag]; !ok { + data[propTag] = propMap["defaultValue"] + } + } + asset, err := assets.NewAsset(data) if err != nil { return nil, errors.WrapError(err, "could not assemble asset type") } assetMap := (map[string]interface{})(asset) - for _, propMap := range defaultValuesMap { - propTag := propMap["tag"].(string) - if _, ok := assetMap[propTag]; !ok { - assetMap[propTag] = propMap["defaultValue"] - } - } - assetMap, err = asset.Update(stub, assetMap) if err != nil { return nil, errors.WrapError(err, "failed to update asset")