hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
rocksdb_specific_query_executor.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_ROCKSDB_SPECIFIC_QUERY_EXECUTOR_HPP
7 #define IROHA_ROCKSDB_SPECIFIC_QUERY_EXECUTOR_HPP
8 
10 
11 #include <fmt/format.h>
13 #include "common/result.hpp"
16 
17 namespace rocksdb {
18  class Transaction;
19 }
20 
21 namespace shared_model::interface {
22  class GetAccount;
23  class GetBlock;
24  class GetSignatories;
25  class GetAccountTransactions;
26  class GetAccountAssetTransactions;
27  class GetTransactions;
28  class GetAccountAssets;
29  class GetAccountDetail;
30  class GetRoles;
31  class GetRolePermissions;
32  class GetAssetInfo;
33  class GetPendingTransactions;
34  class GetPeers;
35  class GetEngineReceipts;
36  class PermissionToString;
37 } // namespace shared_model::interface
38 
39 namespace iroha {
40  class PendingTransactionStorage;
41 } // namespace iroha
42 
43 namespace iroha::ametsuchi {
44  class BlockStorage;
45 
47  public:
49 
50  enum ErrorCodes {
51  kFetchBlockFailed = 1,
52  kQueryHeightOverflow = 3,
53  kAssetNotFound = 4,
54  kNoTransaction = 4,
55  kRetrieveTransactionsFailed = 1010,
56  };
57 
59  std::shared_ptr<RocksDBContext> db_context,
60  BlockStorage &block_store,
61  std::shared_ptr<PendingTransactionStorage> pending_txs_storage,
62  std::shared_ptr<shared_model::interface::QueryResponseFactory>
63  response_factory,
64  std::shared_ptr<shared_model::interface::PermissionToString>
65  perm_converter);
66 
67  std::shared_ptr<RocksDBContext> getTxContext();
68 
70  const shared_model::interface::Query &qry) override;
71 
72  bool hasAccountRolePermission(
74  const std::string &account_id) const override;
75 
76  ExecutionResult operator()(
77  RocksDbCommon &common,
81  shared_model::interface::RolePermissionSet const &creator_permissions);
82 
83  ExecutionResult operator()(
84  RocksDbCommon &common,
88  shared_model::interface::RolePermissionSet const &creator_permissions);
89 
90  ExecutionResult operator()(
91  RocksDbCommon &common,
95  shared_model::interface::RolePermissionSet const &creator_permissions);
96 
97  ExecutionResult operator()(
98  RocksDbCommon &common,
102  shared_model::interface::RolePermissionSet const &creator_permissions);
103 
104  ExecutionResult operator()(
105  RocksDbCommon &common,
109  shared_model::interface::RolePermissionSet const &creator_permissions);
110 
111  ExecutionResult operator()(
112  RocksDbCommon &common,
116  shared_model::interface::RolePermissionSet const &creator_permissions);
117 
118  ExecutionResult operator()(
119  RocksDbCommon &common,
123  shared_model::interface::RolePermissionSet const &creator_permissions);
124 
125  ExecutionResult operator()(
126  RocksDbCommon &common,
130  shared_model::interface::RolePermissionSet const &creator_permissions);
131 
132  ExecutionResult operator()(
133  RocksDbCommon &common,
137  shared_model::interface::RolePermissionSet const &creator_permissions);
138 
139  ExecutionResult operator()(
140  RocksDbCommon &common,
144  shared_model::interface::RolePermissionSet const &creator_permissions);
145 
146  ExecutionResult operator()(
147  RocksDbCommon &common,
151  shared_model::interface::RolePermissionSet const &creator_permissions);
152 
153  ExecutionResult operator()(
154  RocksDbCommon &common,
158  shared_model::interface::RolePermissionSet const &creator_permissions);
159 
160  ExecutionResult operator()(
161  RocksDbCommon &common,
165  shared_model::interface::RolePermissionSet const &creator_permissions);
166 
167  ExecutionResult operator()(
168  RocksDbCommon &common,
172  shared_model::interface::RolePermissionSet const &creator_permissions);
173 
174  private:
175  mutable std::shared_ptr<RocksDBContext> db_context_;
176  BlockStorage &block_store_;
177  std::shared_ptr<PendingTransactionStorage> pending_txs_storage_;
178  std::shared_ptr<shared_model::interface::QueryResponseFactory>
179  query_response_factory_;
180  std::shared_ptr<shared_model::interface::PermissionToString>
181  perm_converter_;
182 
187  template <typename Pred, typename OutputIterator>
188  iroha::expected::Result<void, std::string> getTransactionsFromBlock(
189  uint64_t block_id,
190  uint64_t tx_index,
191  Pred &&pred,
192  OutputIterator dest_it);
193 
194  template <bool readTxsWithAssets, typename Qry>
195  ExecutionResult readTxs(
196  RocksDbCommon &common,
197  std::shared_ptr<shared_model::interface::QueryResponseFactory>
198  &query_response_factory,
199  const Qry &query,
200  const shared_model::interface::types::HashType &query_hash);
201  };
202 
203 } // namespace iroha::ametsuchi
204 
205 #endif // IROHA_ROCKSDB_SPECIFIC_QUERY_EXECUTOR_HPP
Definition: block_query.hpp:17
Definition: get_pending_transactions.hpp:21
Definition: hash.hpp:18
Definition: get_asset_info.hpp:17
Definition: query.hpp:36
Definition: get_transactions.hpp:14
Definition: block_storage.hpp:23
Definition: specific_query_executor.hpp:30
Definition: permissions.hpp:103
Definition: result_fwd.hpp:27
Definition: get_account_asset_transactions.hpp:21
Definition: rocksdb_command_executor.hpp:17
Role
Definition: permissions.hpp:18
std::unique_ptr< shared_model::interface::QueryResponse > QueryExecutorResult
Definition: query_executor.hpp:23
Definition: get_signatories.hpp:18
Definition: get_account_transactions.hpp:21
Definition: block_query.hpp:15
std::string AccountIdType
Type of account id.
Definition: types.hpp:38
ErrorCodes
Definition: rocksdb_specific_query_executor.hpp:50
Definition: command_executor.hpp:14
Definition: get_roles.hpp:17
Definition: get_peers.hpp:17
Definition: get_account_detail.hpp:29
Definition: get_account.hpp:14
WsvCommandResult execute(soci::statement &st, Function &&error)
Definition: postgres_wsv_command.cpp:26
Definition: get_engine_receipts.hpp:17
Definition: rocksdb_specific_query_executor.hpp:46
Definition: get_block.hpp:14
Definition: rocksdb_common.hpp:557
Definition: get_role_permissions.hpp:18
Definition: get_account_assets.hpp:20