OSDN Git Service

filter by assetID
authoroysheng <oysheng@bytom.io>
Sun, 22 Apr 2018 08:43:55 +0000 (16:43 +0800)
committeroysheng <oysheng@bytom.io>
Sun, 22 Apr 2018 08:43:55 +0000 (16:43 +0800)
asset/asset.go

index d75ed20..b8e9d5e 100644 (file)
@@ -303,16 +303,30 @@ func (reg *Registry) GetAsset(id string) (*Asset, error) {
 func (reg *Registry) ListAssets(id string) ([]*Asset, error) {
        assets := []*Asset{DefaultNativeAsset}
 
-       assetKey := assetPrefix
-       if strings.Compare(strings.TrimSpace(id), "") == 0 {
+       assetIDStr := strings.TrimSpace(id)
+       if strings.Compare(assetIDStr, DefaultNativeAsset.AssetID.String()) == 0 {
+               return assets, nil
+       }
+
+       if strings.Compare(assetIDStr, "") != 0 {
                assetID := &bc.AssetID{}
-               if err := assetID.UnmarshalText([]byte(strings.TrimSpace(id))); err != nil {
+               if err := assetID.UnmarshalText([]byte(assetIDStr)); err != nil {
                        return nil, err
                }
-               assetKey = Key(assetID)
+
+               asset := &Asset{}
+               interAsset := reg.db.Get(Key(assetID))
+               if interAsset != nil {
+                       if err := json.Unmarshal(interAsset, asset); err != nil {
+                               return nil, err
+                       }
+                       return []*Asset{asset}, nil
+               }
+
+               return []*Asset{}, nil
        }
 
-       assetIter := reg.db.IteratorPrefix(assetKey)
+       assetIter := reg.db.IteratorPrefix(assetPrefix)
        defer assetIter.Release()
 
        for assetIter.Next() {