From 7c3904bfae62f227fdaea2614cca9ed3ae9a8a9b Mon Sep 17 00:00:00 2001 From: root Date: Wed, 31 May 2017 20:45:25 +0000 Subject: [PATCH] adding get_operation_history_id --- libraries/app/database_api.cpp | 19 +++++++++++++++++++ .../app/include/graphene/app/database_api.hpp | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index 32217826..7f280323 100644 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -68,6 +68,7 @@ class database_api_impl : public std::enable_shared_from_this map> get_block_header_batch(const vector block_nums)const; optional get_block(uint32_t block_num)const; processed_transaction get_transaction( uint32_t block_num, uint32_t trx_in_block )const; + operation_history_id_type get_operation_history_id(uint32_t block_num, uint32_t trx_in_block, uint32_t op_in_trx)const; // Globals chain_property_object get_chain_properties()const; @@ -410,6 +411,24 @@ processed_transaction database_api_impl::get_transaction(uint32_t block_num, uin return opt_block->transactions[trx_num]; } +operation_history_id_type database_api::get_operation_history_id(uint32_t block_num, uint32_t trx_in_block, uint32_t op_in_trx)const +{ + return my->get_operation_history_id( block_num, trx_in_block, op_in_trx ); +} + +operation_history_id_type database_api_impl::get_operation_history_id(uint32_t block_num, uint32_t trx_in_block, uint32_t op_in_trx)const +{ + const simple_index& op_index = _db.get_index_type>(); + + for( const operation_history_object& op : op_index ) + { + if(op.block_num == block_num and op.trx_in_block == trx_in_block and op.op_in_trx == op_in_trx) { + return op.id; + } + } +} + + ////////////////////////////////////////////////////////////////////// // // // Globals // diff --git a/libraries/app/include/graphene/app/database_api.hpp b/libraries/app/include/graphene/app/database_api.hpp index 1fe64a09..94296b86 100644 --- a/libraries/app/include/graphene/app/database_api.hpp +++ b/libraries/app/include/graphene/app/database_api.hpp @@ -185,6 +185,12 @@ class database_api */ optional get_recent_transaction_by_id( const transaction_id_type& id )const; + /** + * Given a block, transaction in block position and operation position in transaction, get the operation_history_id + */ + operation_history_id_type get_operation_history_id(uint32_t block_num, uint32_t trx_in_block, uint32_t op_in_trx)const; + + ///////////// // Globals // ///////////// @@ -600,6 +606,7 @@ FC_API(graphene::app::database_api, (get_block) (get_transaction) (get_recent_transaction_by_id) + (get_operation_history_id) // Globals (get_chain_properties)