From 181b5c33f266d8124d3346e5a343137485bd8eb3 Mon Sep 17 00:00:00 2001 From: oysheng Date: Sun, 22 Apr 2018 15:51:34 +0800 Subject: [PATCH] restore list-accounts and list-assets --- account/accounts.go | 4 ++-- api/query.go | 12 ++++++++---- asset/asset.go | 8 +++++--- cmd/bytomcli/commands/asset.go | 9 ++++++++- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/account/accounts.go b/account/accounts.go index 5584210d..4763ee91 100644 --- a/account/accounts.go +++ b/account/accounts.go @@ -407,9 +407,9 @@ func (m *Manager) DeleteAccount(aliasOrID string) (err error) { } // ListAccounts will return the accounts in the db -func (m *Manager) ListAccounts() ([]*Account, error) { +func (m *Manager) ListAccounts(id string) ([]*Account, error) { accounts := []*Account{} - accountIter := m.db.IteratorPrefix(accountPrefix) + accountIter := m.db.IteratorPrefix(Key(id)) defer accountIter.Release() for accountIter.Next() { diff --git a/api/query.go b/api/query.go index 455e1ed3..45d163db 100644 --- a/api/query.go +++ b/api/query.go @@ -14,8 +14,10 @@ import ( ) // POST /list-accounts -func (a *API) listAccounts(ctx context.Context) Response { - accounts, err := a.wallet.AccountMgr.ListAccounts() +func (a *API) listAccounts(ctx context.Context, filter struct { + ID string `json:"id"` +}) Response { + accounts, err := a.wallet.AccountMgr.ListAccounts(filter.ID) if err != nil { log.Errorf("listAccounts: %v", err) return NewErrorResponse(err) @@ -43,8 +45,10 @@ func (a *API) getAsset(ctx context.Context, filter struct { } // POST /list-assets -func (a *API) listAssets(ctx context.Context) Response { - assets, err := a.wallet.AssetReg.ListAssets() +func (a *API) listAssets(ctx context.Context, filter struct { + ID string `json:"id"` +}) Response { + assets, err := a.wallet.AssetReg.ListAssets(filter.ID) if err != nil { log.Errorf("listAssets: %v", err) return NewErrorResponse(err) diff --git a/asset/asset.go b/asset/asset.go index 7384d5f6..35fcfca1 100644 --- a/asset/asset.go +++ b/asset/asset.go @@ -56,7 +56,7 @@ func aliasKey(name string) []byte { return append(aliasPrefix, []byte(name)...) } -// AssetKey asset store prefix +// Key store asset prefix func Key(id *bc.AssetID) []byte { return append(assetPrefix, id.Bytes()...) } @@ -172,6 +172,7 @@ func (reg *Registry) Define(xpubs []chainkd.XPub, quorum int, definition map[str return a, reg.SaveAsset(a, alias) } +// SaveAsset store asset func (reg *Registry) SaveAsset(a *Asset, alias string) error { reg.assetMu.Lock() defer reg.assetMu.Unlock() @@ -299,9 +300,10 @@ func (reg *Registry) GetAsset(id string) (*Asset, error) { } // ListAssets returns the accounts in the db -func (reg *Registry) ListAssets() ([]*Asset, error) { +func (reg *Registry) ListAssets(id string) ([]*Asset, error) { assets := []*Asset{DefaultNativeAsset} - assetIter := reg.db.IteratorPrefix(assetPrefix) + assetKey := append(assetPrefix, []byte(id)...) + assetIter := reg.db.IteratorPrefix(assetKey) defer assetIter.Release() for assetIter.Next() { diff --git a/cmd/bytomcli/commands/asset.go b/cmd/bytomcli/commands/asset.go index c4b111f8..d0fab10b 100644 --- a/cmd/bytomcli/commands/asset.go +++ b/cmd/bytomcli/commands/asset.go @@ -15,9 +15,12 @@ func init() { createAssetCmd.PersistentFlags().IntVarP(&assetQuorum, "quorom", "q", 1, "quorum must be greater than 0 and less than or equal to the number of signers") createAssetCmd.PersistentFlags().StringVarP(&assetToken, "access", "a", "", "access token") createAssetCmd.PersistentFlags().StringVarP(&assetDefiniton, "definition", "d", "", "definition for the asset") + + listAssetsCmd.PersistentFlags().StringVar(&assetID, "id", "", "ID of asset") } var ( + assetID = "" assetQuorum = 1 assetToken = "" assetDefiniton = "" @@ -85,7 +88,11 @@ var listAssetsCmd = &cobra.Command{ Short: "List the existing assets", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - data, exitCode := util.ClientCall("/list-assets") + filter := struct { + ID string `json:"id"` + }{ID: assetID} + + data, exitCode := util.ClientCall("/list-assets", &filter) if exitCode != util.Success { os.Exit(exitCode) } -- 2.11.0