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_role_permissions_response.hpp"
7 :
8 : #include <boost/range/numeric.hpp>
9 : #include "backend/protobuf/permissions.hpp"
10 : #include "utils/string_builder.hpp"
11 :
12 : namespace shared_model {
13 : namespace proto {
14 :
15 : template <typename QueryResponseType>
16 : RolePermissionsResponse::RolePermissionsResponse(
17 : QueryResponseType &&queryResponse)
18 5 : : CopyableProto(std::forward<QueryResponseType>(queryResponse)),
19 5 : role_permissions_response_{proto_->role_permissions_response()},
20 5 : role_permissions_{boost::accumulate(
21 5 : role_permissions_response_.permissions(),
22 5 : interface::RolePermissionSet{},
23 : [](auto &&permissions, const auto &permission) {
24 5 : permissions.set(permissions::fromTransport(
25 5 : static_cast<iroha::protocol::RolePermission>(permission)));
26 5 : return std::forward<decltype(permissions)>(permissions);
27 5 : })} {}
28 :
29 : template RolePermissionsResponse::RolePermissionsResponse(
30 : RolePermissionsResponse::TransportType &);
31 : template RolePermissionsResponse::RolePermissionsResponse(
32 : const RolePermissionsResponse::TransportType &);
33 : template RolePermissionsResponse::RolePermissionsResponse(
34 : RolePermissionsResponse::TransportType &&);
35 :
36 : RolePermissionsResponse::RolePermissionsResponse(
37 : const RolePermissionsResponse &o)
38 0 : : RolePermissionsResponse(o.proto_) {}
39 :
40 : RolePermissionsResponse::RolePermissionsResponse(
41 : RolePermissionsResponse &&o)
42 5 : : RolePermissionsResponse(std::move(o.proto_)) {}
43 :
44 : const interface::RolePermissionSet &
45 : RolePermissionsResponse::rolePermissions() const {
46 2 : return role_permissions_;
47 : }
48 :
49 : std::string RolePermissionsResponse::toString() const {
50 0 : return detail::PrettyStringBuilder()
51 0 : .init("RolePermissionsResponse")
52 0 : .appendAll(permissions::toString(rolePermissions()),
53 : [](auto p) { return p; })
54 0 : .finalize();
55 0 : }
56 :
57 : } // namespace proto
58 : } // namespace shared_model
|