public void IndexWalletBalances(ChainBase chain) { Configuration.GetWalletBalanceTable().CreateIfNotExists(); Configuration.GetWalletRulesTable().CreateIfNotExists(); var walletRules = Configuration.CreateIndexerClient().GetAllWalletRules(); IndexBalances(chain, "wallets", (txid, tx, blockid, header, height) => { return(OrderedBalanceChange.ExtractWalletBalances(txid, tx, blockid, header, height, walletRules)); }); }
public Task IndexWalletOrderedBalanceAsync(int height, Block block, WalletRuleEntryCollection walletRules) { var table = Configuration.GetBalanceTable(); var blockId = block == null ? null : block.GetHash(); var entities = block .Transactions .SelectMany(t => OrderedBalanceChange.ExtractWalletBalances(null, t, blockId, block.Header, height, walletRules)) .Select(t => t.ToEntity(ConsensusFactory)) .AsEnumerable(); return(IndexAsync(entities, table)); }
public void IndexWalletOrderedBalance(int height, Block block, WalletRuleEntryCollection walletRules) { var table = Configuration.GetBalanceTable(); var blockId = block.GetHash(); foreach (var transaction in block.Transactions) { var txId = transaction.GetHash(); var changes = OrderedBalanceChange.ExtractWalletBalances(txId, transaction, blockId, block.Header, height, walletRules).Select(c => c.ToEntity()); foreach (var group in changes.GroupBy(c => c.PartitionKey)) { Index(group, table); } } }