#260 voters_info all members as optional
This commit is contained in:
parent
9c7c3d2e14
commit
558e3c0045
4 changed files with 58 additions and 42 deletions
|
|
@ -2224,54 +2224,64 @@ voters_info database_api_impl::get_voters(const string &account_name_or_id) cons
|
|||
//! Info for committee member voters
|
||||
if(committee_member_object) {
|
||||
const auto& committee_member_voters = get_voters_by_id(committee_member_object->vote_id);
|
||||
result.voters_for_committee_member.vote_id = committee_member_object->vote_id;
|
||||
result.voters_for_committee_member.voters.reserve(committee_member_voters.size());
|
||||
voters_info_object voters_for_committee_member;
|
||||
voters_for_committee_member.vote_id = committee_member_object->vote_id;
|
||||
voters_for_committee_member.voters.reserve(committee_member_voters.size());
|
||||
for(const auto& voter: committee_member_voters) {
|
||||
result.voters_for_committee_member.voters.emplace_back(voter.get_id());
|
||||
voters_for_committee_member.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
result.voters_for_committee_member = std::move(voters_for_committee_member);
|
||||
}
|
||||
|
||||
//! Info for witness voters
|
||||
if(witness_object) {
|
||||
const auto& witness_voters = get_voters_by_id(witness_object->vote_id);
|
||||
result.voters_for_witness.vote_id = witness_object->vote_id;
|
||||
result.voters_for_witness.voters.reserve(witness_voters.size());
|
||||
voters_info_object voters_for_witness;
|
||||
voters_for_witness.vote_id = witness_object->vote_id;
|
||||
voters_for_witness.voters.reserve(witness_voters.size());
|
||||
for(const auto& voter: witness_voters) {
|
||||
result.voters_for_witness.voters.emplace_back(voter.get_id());
|
||||
voters_for_witness.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
result.voters_for_witness = std::move(voters_for_witness);
|
||||
}
|
||||
|
||||
//! Info for worker voters
|
||||
result.voters_for_workers.reserve(worker_objects.size());
|
||||
result.voters_against_workers.reserve(worker_objects.size());
|
||||
for(const auto& worker_object : worker_objects) {
|
||||
voters_info_object voters_for_worker;
|
||||
const auto& for_worker_voters = get_voters_by_id(worker_object.vote_for);
|
||||
voters_for_worker.vote_id = worker_object.vote_for;
|
||||
voters_for_worker.voters.reserve(for_worker_voters.size());
|
||||
for(const auto& voter: for_worker_voters) {
|
||||
voters_for_worker.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
result.voters_for_workers.emplace_back(std::move(voters_for_worker));
|
||||
if(!worker_objects.empty()) {
|
||||
vector<voters_info_object> voters_for_workers(worker_objects.size());
|
||||
vector<voters_info_object> voters_against_workers(worker_objects.size());
|
||||
for (const auto &worker_object : worker_objects) {
|
||||
voters_info_object voters_for_worker;
|
||||
const auto &for_worker_voters = get_voters_by_id(worker_object.vote_for);
|
||||
voters_for_worker.vote_id = worker_object.vote_for;
|
||||
voters_for_worker.voters.reserve(for_worker_voters.size());
|
||||
for (const auto &voter : for_worker_voters) {
|
||||
voters_for_worker.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
voters_for_workers.emplace_back(std::move(voters_for_worker));
|
||||
|
||||
voters_info_object voters_against_worker;
|
||||
const auto& against_worker_voters = get_voters_by_id(worker_object.vote_against);
|
||||
voters_against_worker.vote_id = worker_object.vote_against;
|
||||
voters_against_worker.voters.reserve(against_worker_voters.size());
|
||||
for(const auto& voter: against_worker_voters) {
|
||||
voters_against_worker.voters.emplace_back(voter.get_id());
|
||||
voters_info_object voters_against_worker;
|
||||
const auto &against_worker_voters = get_voters_by_id(worker_object.vote_against);
|
||||
voters_against_worker.vote_id = worker_object.vote_against;
|
||||
voters_against_worker.voters.reserve(against_worker_voters.size());
|
||||
for (const auto &voter : against_worker_voters) {
|
||||
voters_against_worker.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
voters_against_workers.emplace_back(std::move(voters_against_worker));
|
||||
}
|
||||
result.voters_against_workers.emplace_back(std::move(voters_against_worker));
|
||||
result.voters_for_workers = std::move(voters_for_workers);
|
||||
result.voters_against_workers = std::move(voters_against_workers);
|
||||
}
|
||||
|
||||
//! Info for son voters
|
||||
if(son_object) {
|
||||
const auto& son_voters = get_voters_by_id(son_object->vote_id);
|
||||
result.voters_for_son.vote_id = son_object->vote_id;
|
||||
result.voters_for_son.voters.reserve(son_voters.size());
|
||||
voters_info_object voters_for_son;
|
||||
voters_for_son.vote_id = son_object->vote_id;
|
||||
voters_for_son.voters.reserve(son_voters.size());
|
||||
for(const auto& voter: son_voters) {
|
||||
result.voters_for_son.voters.emplace_back(voter.get_id());
|
||||
voters_for_son.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
result.voters_for_son = std::move(voters_for_son);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@ namespace graphene { namespace chain {
|
|||
* @ingroup object
|
||||
*/
|
||||
struct voters_info {
|
||||
voters_info_object voters_for_committee_member;
|
||||
voters_info_object voters_for_witness;
|
||||
vector<voters_info_object> voters_for_workers;
|
||||
vector<voters_info_object> voters_against_workers;
|
||||
voters_info_object voters_for_son;
|
||||
optional<voters_info_object> voters_for_committee_member;
|
||||
optional<voters_info_object> voters_for_witness;
|
||||
optional<vector<voters_info_object> > voters_for_workers;
|
||||
optional<vector<voters_info_object> > voters_against_workers;
|
||||
optional<voters_info_object> voters_for_son;
|
||||
};
|
||||
|
||||
} } // graphene::chain
|
||||
|
|
|
|||
|
|
@ -249,13 +249,15 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son1account voters
|
||||
auto voters_for_son1account = con.wallet_api_ptr->get_voters("son1account");
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son.voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_son.voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
|
||||
//! Check son2account voters
|
||||
auto voters_for_son2account = con.wallet_api_ptr->get_voters("son2account");
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son.voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_son.voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
|
||||
//! Check votes of nathan
|
||||
auto nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
@ -275,7 +277,8 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son1account voters
|
||||
voters_for_son1account = con.wallet_api_ptr->get_voters("son1account");
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son.voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->voters.size(), 0);
|
||||
|
||||
//! Check votes of nathan
|
||||
nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
@ -294,7 +297,8 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son2account voters
|
||||
voters_for_son2account = con.wallet_api_ptr->get_voters("son2account");
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son.voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->voters.size(), 0);
|
||||
|
||||
//! Check votes of nathan
|
||||
nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
|
|||
|
|
@ -324,8 +324,9 @@ BOOST_AUTO_TEST_CASE(track_votes_witnesses_enabled)
|
|||
|
||||
//! Check witness1 voters
|
||||
const auto voters_for_witness1 = db_api1.get_voters("witness1");
|
||||
BOOST_CHECK_EQUAL(voters_for_witness1.voters_for_witness.voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_witness1.voters_for_witness.voters[0].instance, 18);
|
||||
BOOST_REQUIRE(voters_for_witness1.voters_for_witness);
|
||||
BOOST_CHECK_EQUAL(voters_for_witness1.voters_for_witness->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_witness1.voters_for_witness->voters[0].instance, 18);
|
||||
|
||||
//! Check votes of account
|
||||
const auto account_votes = db_api1.get_votes("1.2.18");
|
||||
|
|
@ -513,8 +514,9 @@ BOOST_AUTO_TEST_CASE(track_votes_committee_enabled)
|
|||
|
||||
//! Check committee1 voters
|
||||
const auto voters_for_committee1 = db_api1.get_voters("committee1");
|
||||
BOOST_CHECK_EQUAL(voters_for_committee1.voters_for_committee_member.voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_committee1.voters_for_committee_member.voters[0].instance, 18);
|
||||
BOOST_REQUIRE(voters_for_committee1.voters_for_committee_member);
|
||||
BOOST_CHECK_EQUAL(voters_for_committee1.voters_for_committee_member->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_committee1.voters_for_committee_member->voters[0].instance, 18);
|
||||
|
||||
//! Check votes of account
|
||||
const auto account_votes = db_api1.get_votes("1.2.18");
|
||||
|
|
|
|||
Loading…
Reference in a new issue