From b22086ff7e7d945834bd1943ee55eec908f84b14 Mon Sep 17 00:00:00 2001 From: sierra19XX <15652887+sierra19XX@users.noreply.github.com> Date: Wed, 12 May 2021 11:44:27 +0000 Subject: [PATCH] add get_blocks --- libraries/app/database_api.cpp | 16 ++++++++++++++++ .../app/include/graphene/app/database_api.hpp | 9 +++++++++ .../wallet/include/graphene/wallet/wallet.hpp | 2 ++ libraries/wallet/wallet.cpp | 5 +++++ 4 files changed, 32 insertions(+) diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index a0a7cfc2..4a41eb90 100644 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -71,6 +71,7 @@ class database_api_impl : public std::enable_shared_from_this optional get_block_header(uint32_t block_num)const; map> get_block_header_batch(const vector block_nums)const; optional get_block(uint32_t block_num)const; + vector> get_blocks(uint32_t block_num_from, uint32_t block_num_to)const; processed_transaction get_transaction( uint32_t block_num, uint32_t trx_in_block )const; // Globals @@ -499,6 +500,21 @@ optional database_api_impl::get_block(uint32_t block_num)const return _db.fetch_block_by_number(block_num); } +vector> database_api::get_blocks(uint32_t block_num_from, uint32_t block_num_to)const +{ + return my->get_blocks( block_num_from, block_num_to ); +} + +vector> database_api_impl::get_blocks(uint32_t block_num_from, uint32_t block_num_to)const +{ + FC_ASSERT( block_num_to >= block_num_from ); + vector> res; + for(uint32_t block_num=block_num_from; block_num<=block_num_to; block_num++) { + res.push_back(_db.fetch_block_by_number(block_num)); + } + return res; +} + processed_transaction database_api::get_transaction( uint32_t block_num, uint32_t trx_in_block )const { return my->get_transaction( block_num, trx_in_block ); diff --git a/libraries/app/include/graphene/app/database_api.hpp b/libraries/app/include/graphene/app/database_api.hpp index 5b275f3f..80fe78dd 100644 --- a/libraries/app/include/graphene/app/database_api.hpp +++ b/libraries/app/include/graphene/app/database_api.hpp @@ -199,6 +199,14 @@ class database_api */ optional get_block(uint32_t block_num)const; + /** + * @brief Retrieve a list of signed blocks + * @param block_num_from start + * @param block_num_to end + * @return list of referenced blocks + */ + vector> get_blocks(uint32_t block_num_from, uint32_t block_num_to)const; + /** * @brief used to fetch an individual transaction. */ @@ -985,6 +993,7 @@ FC_API(graphene::app::database_api, (get_block_header) (get_block_header_batch) (get_block) + (get_blocks) (get_transaction) (get_recent_transaction_by_id) diff --git a/libraries/wallet/include/graphene/wallet/wallet.hpp b/libraries/wallet/include/graphene/wallet/wallet.hpp index b09d950e..58d78228 100644 --- a/libraries/wallet/include/graphene/wallet/wallet.hpp +++ b/libraries/wallet/include/graphene/wallet/wallet.hpp @@ -312,6 +312,7 @@ class wallet_api */ variant_object about() const; optional get_block( uint32_t num ); + vector> get_blocks(uint32_t block_num_from, uint32_t block_num_to)const; /** Returns the number of accounts registered on the blockchain * @returns the number of registered accounts */ @@ -2652,6 +2653,7 @@ FC_API( graphene::wallet::wallet_api, (get_account) (get_account_id) (get_block) + (get_blocks) (get_account_count) (get_account_history) (get_relative_account_history) diff --git a/libraries/wallet/wallet.cpp b/libraries/wallet/wallet.cpp index 29306675..874e10b5 100644 --- a/libraries/wallet/wallet.cpp +++ b/libraries/wallet/wallet.cpp @@ -4351,6 +4351,11 @@ optional wallet_api::get_block(uint32_t num) return my->_remote_db->get_block(num); } +vector> wallet_api::get_blocks(uint32_t block_num_from, uint32_t block_num_to) const +{ + return my->_remote_db->get_blocks(block_num_from, block_num_to); +} + uint64_t wallet_api::get_account_count() const { return my->_remote_db->get_account_count();