diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index 7f280323..cd941b5c 100644 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -69,6 +69,7 @@ class database_api_impl : public std::enable_shared_from_this 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; + account_transaction_history_id_type get_account_transaction_history_id(operation_history_id_type operation_id)const; // Globals chain_property_object get_chain_properties()const; @@ -424,6 +425,25 @@ operation_history_id_type database_api_impl::get_operation_history_id(uint32_t b { 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; + break; + } + } +} +account_transaction_history_id_type database_api::get_account_transaction_history_id(operation_history_id_type operation_id)const +{ + return my->get_account_transaction_history_id( operation_id ); +} + +account_transaction_history_id_type database_api_impl::get_account_transaction_history_id(operation_history_id_type operation_id)const +{ + const auto& ath_idx = _db.get_index_type(); + const auto& ath_by_seq_idx = ath_idx.indices().get(); + + for( const account_transaction_history_object& ath : ath_by_seq_idx ) + { + if(ath.operation_id == operation_id) { + return ath.id; + break; } } } diff --git a/libraries/app/include/graphene/app/database_api.hpp b/libraries/app/include/graphene/app/database_api.hpp index 94296b86..131d2dc2 100644 --- a/libraries/app/include/graphene/app/database_api.hpp +++ b/libraries/app/include/graphene/app/database_api.hpp @@ -190,6 +190,10 @@ class database_api */ operation_history_id_type get_operation_history_id(uint32_t block_num, uint32_t trx_in_block, uint32_t op_in_trx)const; + /** + * Given a operation_history_id, get the account_transaction_history_id + */ + account_transaction_history_id_type get_account_transaction_history_id(operation_history_id_type operation_id)const; ///////////// // Globals // @@ -607,6 +611,7 @@ FC_API(graphene::app::database_api, (get_transaction) (get_recent_transaction_by_id) (get_operation_history_id) + (get_account_transaction_history_id) // Globals (get_chain_properties)