OSDN Git Service

return asset definition when get balances
authorYongfeng LI <wliyongfeng@gmail.com>
Thu, 19 Apr 2018 11:51:40 +0000 (19:51 +0800)
committerYongfeng LI <wliyongfeng@gmail.com>
Thu, 19 Apr 2018 11:51:40 +0000 (19:51 +0800)
api/query.go
test/wallet_test_util.go
wallet/indexer.go
wallet/wallet.go

index ed0459c..e54a614 100644 (file)
@@ -57,7 +57,11 @@ func (a *API) listAssets(ctx context.Context) Response {
 
 // POST /list-balances
 func (a *API) listBalances(ctx context.Context) Response {
-       return NewSuccessResponse(a.wallet.GetAccountBalances(""))
+       balances, err := a.wallet.GetAccountBalances("")
+       if err != nil {
+               return NewErrorResponse(err)
+       }
+       return NewSuccessResponse(balances)
 }
 
 // POST /get-transaction
index 29bcb16..ae78997 100644 (file)
@@ -191,7 +191,7 @@ func (ctx *walletTestContext) update(block *types.Block) error {
 }
 
 func (ctx *walletTestContext) getBalance(accountAlias string, assetAlias string) (uint64, error) {
-       balances := ctx.Wallet.GetAccountBalances("")
+       balances, _ := ctx.Wallet.GetAccountBalances("")
        for _, balance := range balances {
                if balance.Alias == accountAlias && balance.AssetAlias == assetAlias {
                        return balance.Amount, nil
@@ -202,7 +202,7 @@ func (ctx *walletTestContext) getBalance(accountAlias string, assetAlias string)
 
 func (ctx *walletTestContext) getAccBalances() map[string]map[string]uint64 {
        accBalances := make(map[string]map[string]uint64)
-       balances := ctx.Wallet.GetAccountBalances("")
+       balances, _ := ctx.Wallet.GetAccountBalances("")
        for _, balance := range balances {
                if accBalance, ok := accBalances[balance.Alias]; ok {
                        if _, ok := accBalance[balance.AssetAlias]; ok {
index 9552117..4a3b9a0 100644 (file)
@@ -542,23 +542,23 @@ func (w *Wallet) GetAccountUTXOs(id string) []account.UTXO {
 }
 
 // GetAccountBalances return all account balances
-func (w *Wallet) GetAccountBalances(id string) []AccountBalance {
+func (w *Wallet) GetAccountBalances(id string) ([]AccountBalance, error) {
        return w.indexBalances(w.GetAccountUTXOs(""))
 }
 
 // AccountBalance account balance
 type AccountBalance struct {
-       AccountID  string `json:"account_id"`
-       Alias      string `json:"account_alias"`
-       AssetAlias string `json:"asset_alias"`
-       AssetID    string `json:"asset_id"`
-       Amount     uint64 `json:"amount"`
+       AccountID       string                 `json:"account_id"`
+       Alias           string                 `json:"account_alias"`
+       AssetAlias      string                 `json:"asset_alias"`
+       AssetID         string                 `json:"asset_id"`
+       Amount          uint64                 `json:"amount"`
+       AssetDefinition map[string]interface{} `json:"asset_definition"`
 }
 
-func (w *Wallet) indexBalances(accountUTXOs []account.UTXO) []AccountBalance {
+func (w *Wallet) indexBalances(accountUTXOs []account.UTXO) ([]AccountBalance, error) {
        accBalance := make(map[string]map[string]uint64)
        balances := make([]AccountBalance, 0)
-       tmpBalance := AccountBalance{}
 
        for _, accountUTXO := range accountUTXOs {
                assetID := accountUTXO.AssetID.String()
@@ -588,15 +588,22 @@ func (w *Wallet) indexBalances(accountUTXOs []account.UTXO) []AccountBalance {
 
                for _, assetID := range sortedAsset {
                        alias := w.AccountMgr.GetAliasByID(id)
-                       assetAlias := w.AssetReg.GetAliasByID(assetID)
-                       tmpBalance.Alias = alias
-                       tmpBalance.AccountID = id
-                       tmpBalance.AssetID = assetID
-                       tmpBalance.AssetAlias = assetAlias
-                       tmpBalance.Amount = accBalance[id][assetID]
-                       balances = append(balances, tmpBalance)
+                       targetAsset, err := w.AssetReg.GetAsset(assetID)
+                       if err != nil {
+                               return nil, err
+                       }
+
+                       assetAlias := *targetAsset.Alias
+                       balances = append(balances, AccountBalance{
+                               Alias: alias,
+                               AccountID: id,
+                               AssetID: assetID,
+                               AssetAlias: assetAlias,
+                               Amount: accBalance[id][assetID],
+                               AssetDefinition: targetAsset.DefinitionMap,
+                       })
                }
        }
 
-       return balances
+       return balances, nil
 }
index a5143c3..f03da8e 100644 (file)
@@ -16,9 +16,6 @@ import (
 //SINGLE single sign
 const SINGLE = 1
 
-//RecoveryIndex walletdb recovery cp number
-const RecoveryIndex = 5000
-
 var walletKey = []byte("walletInfo")
 
 //StatusInfo is base valid block info to handle orphan block rollback