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/commands/proto_create_role.hpp"
7 :
8 : #include <boost/range/numeric.hpp>
9 : #include "backend/protobuf/permissions.hpp"
10 :
11 : namespace shared_model {
12 : namespace proto {
13 :
14 : template <typename CommandType>
15 : CreateRole::CreateRole(CommandType &&command)
16 13253 : : CopyableProto(std::forward<CommandType>(command)),
17 13296 : create_role_{proto_->create_role()},
18 13329 : role_permissions_{boost::accumulate(
19 13296 : create_role_.permissions(),
20 13279 : interface::RolePermissionSet{},
21 : [](auto &&acc, const auto &perm) {
22 145875 : acc.set(permissions::fromTransport(
23 145875 : static_cast<iroha::protocol::RolePermission>(perm)));
24 145875 : return std::forward<decltype(acc)>(acc);
25 13329 : })} {}
26 :
27 : template CreateRole::CreateRole(CreateRole::TransportType &);
28 : template CreateRole::CreateRole(const CreateRole::TransportType &);
29 : template CreateRole::CreateRole(CreateRole::TransportType &&);
30 :
31 : CreateRole::CreateRole(const CreateRole &o) : CreateRole(o.proto_) {}
32 :
33 : CreateRole::CreateRole(CreateRole &&o) noexcept
34 13330 : : CreateRole(std::move(o.proto_)) {}
35 :
36 : const interface::types::RoleIdType &CreateRole::roleName() const {
37 5810 : return create_role_.role_name();
38 : }
39 :
40 : const interface::RolePermissionSet &CreateRole::rolePermissions() const {
41 5826 : return role_permissions_;
42 : }
43 :
44 : std::string CreateRole::toString() const {
45 3 : return detail::PrettyStringBuilder()
46 2 : .init("CreateRole")
47 2 : .append("role_name", roleName())
48 3 : .appendAll(permissions::toString(rolePermissions()),
49 : [](auto p) { return p; })
50 3 : .finalize();
51 0 : }
52 :
53 : } // namespace proto
54 : } // namespace shared_model
|