#319 - get_votes fix sidechain_type as map
This commit is contained in:
parent
34608c1c9d
commit
524b2d7fdd
1 changed files with 24 additions and 19 deletions
|
|
@ -2138,13 +2138,22 @@ vector<vote_id_type> database_api_impl::get_votes_ids(const string &account_name
|
|||
votes_info database_api_impl::get_votes(const string &account_name_or_id) const {
|
||||
votes_info result;
|
||||
|
||||
const auto &votes_ids = get_votes_ids(account_name_or_id);
|
||||
const auto &committee_ids = get_votes_objects<committee_member_index, by_vote_id>(votes_ids);
|
||||
const auto &witness_ids = get_votes_objects<witness_index, by_vote_id>(votes_ids);
|
||||
const auto &for_worker_ids = get_votes_objects<worker_index, by_vote_for>(votes_ids);
|
||||
const auto &against_worker_ids = get_votes_objects<worker_index, by_vote_against>(votes_ids);
|
||||
const auto &son_bitcoin_ids = get_votes_objects<son_index, by_vote_id_bitcoin>(votes_ids, 5);
|
||||
const auto &son_hive_ids = get_votes_objects<son_index, by_vote_id_hive>(votes_ids, 5);
|
||||
const auto votes_ids = get_votes_ids(account_name_or_id);
|
||||
const auto committee_ids = get_votes_objects<committee_member_index, by_vote_id>(votes_ids);
|
||||
const auto witness_ids = get_votes_objects<witness_index, by_vote_id>(votes_ids);
|
||||
const auto for_worker_ids = get_votes_objects<worker_index, by_vote_for>(votes_ids);
|
||||
const auto against_worker_ids = get_votes_objects<worker_index, by_vote_against>(votes_ids);
|
||||
const auto son_ids = [this, &votes_ids]()
|
||||
{
|
||||
flat_map<sidechain_type, vector<variant> > son_ids;
|
||||
const auto son_bitcoin_ids = get_votes_objects<son_index, by_vote_id_bitcoin>(votes_ids, 5);
|
||||
if (!son_bitcoin_ids.empty())
|
||||
son_ids[sidechain_type::bitcoin] = std::move(son_bitcoin_ids);
|
||||
const auto son_hive_ids = get_votes_objects<son_index, by_vote_id_hive>(votes_ids, 5);
|
||||
if (!son_hive_ids.empty())
|
||||
son_ids[sidechain_type::hive] = std::move(son_hive_ids);
|
||||
return son_ids;
|
||||
}();
|
||||
|
||||
//! Fill votes info
|
||||
if (!committee_ids.empty()) {
|
||||
|
|
@ -2187,20 +2196,16 @@ votes_info database_api_impl::get_votes(const string &account_name_or_id) const
|
|||
result.votes_against_workers = std::move(votes_against_workers);
|
||||
}
|
||||
|
||||
if (!son_bitcoin_ids.empty() || !son_hive_ids.empty()) {
|
||||
if (!son_ids.empty()) {
|
||||
flat_map<sidechain_type, vector< votes_info_object > > votes_for_sons;
|
||||
if(!son_bitcoin_ids.empty()) {
|
||||
votes_for_sons[sidechain_type::bitcoin].reserve(son_bitcoin_ids.size());
|
||||
for (const auto &son : son_bitcoin_ids) {
|
||||
for(const auto& son_sidechain_ids : son_ids)
|
||||
{
|
||||
const auto& sidechain = son_sidechain_ids.first;
|
||||
const auto& sidechain_ids = son_sidechain_ids.second;
|
||||
votes_for_sons[sidechain].reserve(sidechain_ids.size());
|
||||
for (const auto &son : sidechain_ids) {
|
||||
const auto &son_obj = son.as<son_object>(6);
|
||||
votes_for_sons[sidechain_type::bitcoin].emplace_back(votes_info_object{son_obj.get_bitcoin_vote_id(), son_obj.id});
|
||||
}
|
||||
}
|
||||
if(!son_hive_ids.empty()) {
|
||||
votes_for_sons[sidechain_type::hive].reserve(son_hive_ids.size());
|
||||
for (const auto &son : son_hive_ids) {
|
||||
const auto &son_obj = son.as<son_object>(6);
|
||||
votes_for_sons[sidechain_type::hive].emplace_back(votes_info_object{son_obj.get_hive_vote_id(), son_obj.id});
|
||||
votes_for_sons[sidechain].emplace_back(votes_info_object{son_obj.get_sidechain_vote_id(sidechain), son_obj.id});
|
||||
}
|
||||
}
|
||||
result.votes_for_sons = std::move(votes_for_sons);
|
||||
|
|
|
|||
Loading…
Reference in a new issue