Enable RPC calls

This commit is contained in:
Srdjan Obucina 2019-12-11 21:31:34 +01:00
parent 9f5269e808
commit 5085167554
6 changed files with 48 additions and 14 deletions

View file

@ -155,6 +155,7 @@ class database_api_impl : public std::enable_shared_from_this<database_api_impl>
// Sidechain addresses // Sidechain addresses
vector<optional<sidechain_address_object>> get_sidechain_addresses(const vector<sidechain_address_id_type>& sidechain_address_ids)const; vector<optional<sidechain_address_object>> get_sidechain_addresses(const vector<sidechain_address_id_type>& sidechain_address_ids)const;
vector<optional<sidechain_address_object>> get_sidechain_addresses_by_account(account_id_type account)const; vector<optional<sidechain_address_object>> get_sidechain_addresses_by_account(account_id_type account)const;
vector<optional<sidechain_address_object>> get_sidechain_addresses_by_sidechain(peerplays_sidechain::sidechain_type sidechain)const;
fc::optional<sidechain_address_object> get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const; fc::optional<sidechain_address_object> get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const;
uint64_t get_sidechain_addresses_count()const; uint64_t get_sidechain_addresses_count()const;
@ -1799,6 +1800,21 @@ vector<optional<sidechain_address_object>> database_api::get_sidechain_addresses
vector<optional<sidechain_address_object>> database_api_impl::get_sidechain_addresses_by_account(account_id_type account)const vector<optional<sidechain_address_object>> database_api_impl::get_sidechain_addresses_by_account(account_id_type account)const
{ {
//const auto& idx = _db.get_index_type<sidechain_address_index>().indices().get<by_account>();
vector<optional<sidechain_address_object>> result;
return result;
}
vector<optional<sidechain_address_object>> database_api::get_sidechain_addresses_by_sidechain(peerplays_sidechain::sidechain_type sidechain)const
{
return my->get_sidechain_addresses_by_sidechain( sidechain );
}
vector<optional<sidechain_address_object>> database_api_impl::get_sidechain_addresses_by_sidechain(peerplays_sidechain::sidechain_type sidechain)const
{
//const auto& idx = _db.get_index_type<sidechain_address_index>().indices().get<by_sidechain>();
vector<optional<sidechain_address_object>> result; vector<optional<sidechain_address_object>> result;
return result; return result;
} }
@ -1810,8 +1826,11 @@ fc::optional<sidechain_address_object> database_api::get_sidechain_addresses_by_
fc::optional<sidechain_address_object> database_api_impl::get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const fc::optional<sidechain_address_object> database_api_impl::get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const
{ {
sidechain_address_object result; const auto& idx = _db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
return result; auto itr = idx.find( boost::make_tuple( account, sidechain ) );
if( itr != idx.end() )
return *itr;
return {};
} }
uint64_t database_api::get_sidechain_addresses_count()const uint64_t database_api::get_sidechain_addresses_count()const
@ -1821,7 +1840,7 @@ uint64_t database_api::get_sidechain_addresses_count()const
uint64_t database_api_impl::get_sidechain_addresses_count()const uint64_t database_api_impl::get_sidechain_addresses_count()const
{ {
return 0; return _db.get_index_type<sidechain_address_index>().indices().size();
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////

View file

@ -623,11 +623,18 @@ class database_api
*/ */
vector<optional<sidechain_address_object>> get_sidechain_addresses_by_account(account_id_type account)const; vector<optional<sidechain_address_object>> get_sidechain_addresses_by_account(account_id_type account)const;
/**
* @brief Get the sidechain addresses for a given sidechain
* @param sidechain Sidechain for which addresses should be retrieved
* @return The sidechain addresses objects, or null if the sidechain does not have any addresses
*/
vector<optional<sidechain_address_object>> get_sidechain_addresses_by_sidechain(peerplays_sidechain::sidechain_type sidechain)const;
/** /**
* @brief Get the sidechain addresses for a given account and sidechain * @brief Get the sidechain addresses for a given account and sidechain
* @param account The ID of the account whose sidechain addresses should be retrieved * @param account The ID of the account whose sidechain addresses should be retrieved
* @param sidechain Sidechain for which address should be retrieved * @param sidechain Sidechain for which address should be retrieved
* @return The sidechain addresses objects, or null if the account does not have a sidechain addresses for a given network * @return The sidechain addresses objects, or null if the account does not have a sidechain addresses for a given sidechain
*/ */
fc::optional<sidechain_address_object> get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const; fc::optional<sidechain_address_object> get_sidechain_addresses_by_account_and_sidechain(account_id_type account, peerplays_sidechain::sidechain_type sidechain)const;
@ -848,6 +855,13 @@ FC_API(graphene::app::database_api,
(lookup_son_accounts) (lookup_son_accounts)
(get_son_count) (get_son_count)
// Sidechain addresses
(get_sidechain_addresses)
(get_sidechain_addresses_by_account)
(get_sidechain_addresses_by_sidechain)
(get_sidechain_addresses_by_account_and_sidechain)
(get_sidechain_addresses_count)
// workers // workers
(get_workers_by_account) (get_workers_by_account)
// Votes // Votes

View file

@ -33,8 +33,8 @@ namespace graphene { namespace chain {
}; };
struct by_account; struct by_account;
struct by_network; struct by_sidechain;
struct by_account_and_network; struct by_account_and_sidechain;
using sidechain_address_multi_index_type = multi_index_container< using sidechain_address_multi_index_type = multi_index_container<
sidechain_address_object, sidechain_address_object,
indexed_by< indexed_by<
@ -44,10 +44,10 @@ namespace graphene { namespace chain {
ordered_unique< tag<by_account>, ordered_unique< tag<by_account>,
member<sidechain_address_object, account_id_type, &sidechain_address_object::sidechain_address_account> member<sidechain_address_object, account_id_type, &sidechain_address_object::sidechain_address_account>
>, >,
ordered_unique< tag<by_network>, ordered_unique< tag<by_sidechain>,
member<sidechain_address_object, peerplays_sidechain::sidechain_type, &sidechain_address_object::sidechain> member<sidechain_address_object, peerplays_sidechain::sidechain_type, &sidechain_address_object::sidechain>
>, >,
ordered_unique< tag<by_account_and_network>, ordered_unique< tag<by_account_and_sidechain>,
composite_key<sidechain_address_object, composite_key<sidechain_address_object,
member<sidechain_address_object, account_id_type, &sidechain_address_object::sidechain_address_account>, member<sidechain_address_object, account_id_type, &sidechain_address_object::sidechain_address_account>,
member<sidechain_address_object, peerplays_sidechain::sidechain_type, &sidechain_address_object::sidechain> member<sidechain_address_object, peerplays_sidechain::sidechain_type, &sidechain_address_object::sidechain>

View file

@ -9,7 +9,7 @@ namespace graphene { namespace chain {
void_result add_sidechain_address_evaluator::do_evaluate(const sidechain_address_add_operation& op) void_result add_sidechain_address_evaluator::do_evaluate(const sidechain_address_add_operation& op)
{ try{ { try{
const auto& idx = db().get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db().get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
FC_ASSERT( idx.find(boost::make_tuple(op.sidechain_address_account, op.sidechain)) == idx.end(), "Duplicated item" ); FC_ASSERT( idx.find(boost::make_tuple(op.sidechain_address_account, op.sidechain)) == idx.end(), "Duplicated item" );
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }

View file

@ -23,6 +23,7 @@ bool sidechain_net_manager::create_handler(peerplays_sidechain::sidechain_type s
std::unique_ptr<sidechain_net_handler> h = std::unique_ptr<sidechain_net_handler>(new sidechain_net_handler_bitcoin(options)); std::unique_ptr<sidechain_net_handler> h = std::unique_ptr<sidechain_net_handler>(new sidechain_net_handler_bitcoin(options));
net_handlers.push_back(std::move(h)); net_handlers.push_back(std::move(h));
ret_val = true; ret_val = true;
break;
} }
default: default:
assert(false); assert(false);

View file

@ -42,7 +42,7 @@ BOOST_AUTO_TEST_CASE( sidechain_address_add_test ) {
BOOST_TEST_MESSAGE("Check sidechain_address_add_operation results"); BOOST_TEST_MESSAGE("Check sidechain_address_add_operation results");
const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
BOOST_REQUIRE( idx.size() == 1 ); BOOST_REQUIRE( idx.size() == 1 );
auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) ); auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) );
BOOST_REQUIRE( obj != idx.end() ); BOOST_REQUIRE( obj != idx.end() );
@ -61,7 +61,7 @@ BOOST_AUTO_TEST_CASE( sidechain_address_update_test ) {
GET_ACTOR(alice); GET_ACTOR(alice);
const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
BOOST_REQUIRE( idx.size() == 1 ); BOOST_REQUIRE( idx.size() == 1 );
auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) ); auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) );
BOOST_REQUIRE( obj != idx.end() ); BOOST_REQUIRE( obj != idx.end() );
@ -90,7 +90,7 @@ BOOST_AUTO_TEST_CASE( sidechain_address_update_test ) {
{ {
BOOST_TEST_MESSAGE("Check sidechain_address_update_operation results"); BOOST_TEST_MESSAGE("Check sidechain_address_update_operation results");
const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
BOOST_REQUIRE( idx.size() == 1 ); BOOST_REQUIRE( idx.size() == 1 );
auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) ); auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) );
BOOST_REQUIRE( obj != idx.end() ); BOOST_REQUIRE( obj != idx.end() );
@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE( sidechain_address_delete_test ) {
GET_ACTOR(alice); GET_ACTOR(alice);
const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
BOOST_REQUIRE( idx.size() == 1 ); BOOST_REQUIRE( idx.size() == 1 );
auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) ); auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) );
BOOST_REQUIRE( obj != idx.end() ); BOOST_REQUIRE( obj != idx.end() );
@ -132,7 +132,7 @@ BOOST_AUTO_TEST_CASE( sidechain_address_delete_test ) {
{ {
BOOST_TEST_MESSAGE("Check sidechain_address_delete_operation results"); BOOST_TEST_MESSAGE("Check sidechain_address_delete_operation results");
const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_network>(); const auto& idx = db.get_index_type<sidechain_address_index>().indices().get<by_account_and_sidechain>();
BOOST_REQUIRE( idx.size() == 0 ); BOOST_REQUIRE( idx.size() == 0 );
auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) ); auto obj = idx.find( boost::make_tuple( alice_id, graphene::peerplays_sidechain::sidechain_type::bitcoin ) );
BOOST_REQUIRE( obj == idx.end() ); BOOST_REQUIRE( obj == idx.end() );