Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. All Rights Reserved.
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #include "backend/protobuf/query_responses/proto_account_response.hpp"
7 :
8 : namespace shared_model {
9 : namespace proto {
10 :
11 : template <typename QueryResponseType>
12 : AccountResponse::AccountResponse(QueryResponseType &&queryResponse)
13 27 : : CopyableProto(std::forward<QueryResponseType>(queryResponse)),
14 27 : accountResponse_{proto_->account_response()},
15 : accountRoles_{[this] {
16 10 : return boost::accumulate(
17 10 : accountResponse_.account_roles(),
18 10 : AccountRolesIdType{},
19 : [](auto &&roles, const auto &role) {
20 11 : roles.push_back(interface::types::RoleIdType(role));
21 11 : return std::move(roles);
22 0 : });
23 0 : }},
24 : account_{[this] { return Account(accountResponse_.account()); }} {}
25 :
26 : template AccountResponse::AccountResponse(AccountResponse::TransportType &);
27 : template AccountResponse::AccountResponse(
28 : const AccountResponse::TransportType &);
29 : template AccountResponse::AccountResponse(
30 : AccountResponse::TransportType &&);
31 :
32 : AccountResponse::AccountResponse(const AccountResponse &o)
33 0 : : AccountResponse(o.proto_) {}
34 :
35 : AccountResponse::AccountResponse(AccountResponse &&o)
36 27 : : AccountResponse(std::move(o.proto_)) {}
37 :
38 : const interface::Account &AccountResponse::account() const {
39 25 : return *account_;
40 : }
41 :
42 : const AccountResponse::AccountRolesIdType &AccountResponse::roles() const {
43 16 : return *accountRoles_;
44 : }
45 :
46 : } // namespace proto
47 : } // namespace shared_model
|