TARAXA
query.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "QueryObject.h"
4 #include "dag/dag_manager.hpp"
6 #include "graphql/block.hpp"
7 #include "network/network.hpp"
8 #include "pbft/pbft_manager.hpp"
11 
12 namespace graphql::taraxa {
13 class Query {
14  public:
15  explicit Query(std::shared_ptr<::taraxa::final_chain::FinalChain> final_chain,
16  std::shared_ptr<::taraxa::DagManager> dag_manager, std::shared_ptr<::taraxa::PbftManager> pbft_manager,
17  std::shared_ptr<::taraxa::TransactionManager> transaction_manager,
18  std::shared_ptr<::taraxa::DbStorage> db, std::shared_ptr<::taraxa::GasPricer> gas_pricer,
19  std::weak_ptr<::taraxa::Network> network, uint64_t chain_id) noexcept;
20 
21  std::shared_ptr<object::Block> getBlock(std::optional<response::Value>&& numberArg,
22  std::optional<response::Value>&& hashArg) const;
23  std::vector<std::shared_ptr<object::Block>> getBlocks(response::Value&& fromArg,
24  std::optional<response::Value>&& toArg) const;
25  std::shared_ptr<object::Transaction> getTransaction(response::Value&& hashArg) const;
26  std::shared_ptr<object::Account> getAccount(response::Value&& addressArg,
27  std::optional<response::Value>&& blockArg) const;
28  response::Value getGasPrice() const;
29  std::shared_ptr<object::SyncState> getSyncing() const;
30  response::Value getChainID() const;
31  std::shared_ptr<object::DagBlock> getDagBlock(std::optional<response::Value>&& hashArg) const;
32  std::vector<std::shared_ptr<object::DagBlock>> getPeriodDagBlocks(std::optional<response::Value>&& periodArg) const;
33  std::vector<std::shared_ptr<object::DagBlock>> getDagBlocks(std::optional<response::Value>&& dagLevelArg,
34  std::optional<int>&& countArg,
35  std::optional<bool>&& reverseArg) const;
36  std::shared_ptr<object::CurrentState> getNodeState() const;
37 
38  private:
39  // TODO: use pagination limit for all "list" queries
40  static constexpr size_t kMaxPropagationLimit{100};
41 
42  std::shared_ptr<::taraxa::final_chain::FinalChain> final_chain_;
43  std::shared_ptr<::taraxa::DagManager> dag_manager_;
44  std::shared_ptr<::taraxa::PbftManager> pbft_manager_;
45  std::shared_ptr<::taraxa::TransactionManager> transaction_manager_;
46  std::shared_ptr<::taraxa::DbStorage> db_;
47  std::shared_ptr<::taraxa::GasPricer> gas_pricer_;
48  std::weak_ptr<::taraxa::Network> network_;
49  const uint64_t kChainId;
50  std::function<std::shared_ptr<object::Block>(::taraxa::EthBlockNumber)> get_block_by_num_;
51 };
52 
53 } // namespace graphql::taraxa
Definition: query.hpp:13
response::Value getChainID() const
Definition: query.cpp:128
std::shared_ptr<::taraxa::DbStorage > db_
Definition: query.hpp:46
std::weak_ptr<::taraxa::Network > network_
Definition: query.hpp:48
std::shared_ptr< object::SyncState > getSyncing() const
Definition: query.cpp:124
std::shared_ptr< object::Account > getAccount(response::Value &&addressArg, std::optional< response::Value > &&blockArg) const
Definition: query.cpp:112
std::shared_ptr< object::DagBlock > getDagBlock(std::optional< response::Value > &&hashArg) const
Definition: query.cpp:130
std::shared_ptr< object::Block > getBlock(std::optional< response::Value > &&numberArg, std::optional< response::Value > &&hashArg) const
Definition: query.cpp:35
Query(std::shared_ptr<::taraxa::final_chain::FinalChain > final_chain, std::shared_ptr<::taraxa::DagManager > dag_manager, std::shared_ptr<::taraxa::PbftManager > pbft_manager, std::shared_ptr<::taraxa::TransactionManager > transaction_manager, std::shared_ptr<::taraxa::DbStorage > db, std::shared_ptr<::taraxa::GasPricer > gas_pricer, std::weak_ptr<::taraxa::Network > network, uint64_t chain_id) noexcept
Definition: query.cpp:17
std::shared_ptr<::taraxa::GasPricer > gas_pricer_
Definition: query.hpp:47
std::vector< std::shared_ptr< object::Block > > getBlocks(response::Value &&fromArg, std::optional< response::Value > &&toArg) const
Definition: query.cpp:70
std::shared_ptr< object::CurrentState > getNodeState() const
Definition: query.cpp:220
std::shared_ptr<::taraxa::TransactionManager > transaction_manager_
Definition: query.hpp:45
static constexpr size_t kMaxPropagationLimit
Definition: query.hpp:40
const uint64_t kChainId
Definition: query.hpp:49
response::Value getGasPrice() const
Definition: query.cpp:122
std::shared_ptr<::taraxa::PbftManager > pbft_manager_
Definition: query.hpp:44
std::vector< std::shared_ptr< object::DagBlock > > getDagBlocks(std::optional< response::Value > &&dagLevelArg, std::optional< int > &&countArg, std::optional< bool > &&reverseArg) const
Definition: query.cpp:172
std::vector< std::shared_ptr< object::DagBlock > > getPeriodDagBlocks(std::optional< response::Value > &&periodArg) const
Definition: query.cpp:152
std::shared_ptr<::taraxa::DagManager > dag_manager_
Definition: query.hpp:43
std::shared_ptr< object::Transaction > getTransaction(response::Value &&hashArg) const
Definition: query.cpp:104
std::shared_ptr<::taraxa::final_chain::FinalChain > final_chain_
Definition: query.hpp:42
std::function< std::shared_ptr< object::Block >::taraxa::EthBlockNumber)> get_block_by_num_
Definition: query.hpp:50
Definition: account.hpp:10
uint64_t EthBlockNumber
Definition: types.hpp:23