hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
postgres_wsv_query.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_POSTGRES_WSV_QUERY_HPP
7 #define IROHA_POSTGRES_WSV_QUERY_HPP
8 
9 #include <soci/soci.h>
10 
11 #include "ametsuchi/wsv_query.hpp"
12 #include "logger/logger_fwd.hpp"
13 
14 namespace iroha {
15  namespace ametsuchi {
16  class PostgresWsvQuery : public WsvQuery {
17  public:
18  PostgresWsvQuery(soci::session &sql, logger::LoggerPtr log);
19 
20  PostgresWsvQuery(std::unique_ptr<soci::session> sql,
21  logger::LoggerPtr log);
22 
23  boost::optional<std::vector<std::string>> getSignatories(
25  override;
26 
27  boost::optional<
28  std::vector<std::shared_ptr<shared_model::interface::Peer>>>
29  getPeers() override;
30 
34 
35  boost::optional<std::shared_ptr<shared_model::interface::Peer>>
36  getPeerByPublicKey(shared_model::interface::types::PublicKeyHexStringView
37  public_key) override;
38 
40  getTopBlockInfo() const override;
41 
42  private:
47  template <typename T, typename F>
48  auto execute(F &&f) -> boost::optional<soci::rowset<T>>;
49 
51  std::string_view, std::string_view column = "*");
52 
53  // TODO andrei 24.09.2018: IR-1718 Consistent soci::session fields in
54  // storage classes
55  std::unique_ptr<soci::session> psql_;
56  soci::session &sql_;
57  logger::LoggerPtr log_;
58  };
59  } // namespace ametsuchi
60 } // namespace iroha
61 
62 #endif // IROHA_POSTGRES_WSV_QUERY_HPP
boost::optional< std::vector< std::string > > getSignatories(const shared_model::interface::types::AccountIdType &account_id) override
Definition: postgres_wsv_query.cpp:57
Definition: block_query.hpp:17
boost::optional< std::vector< std::shared_ptr< shared_model::interface::Peer > > > getPeers() override
Definition: postgres_wsv_query.cpp:72
Definition: result_fwd.hpp:27
iroha::expected::Result< iroha::TopBlockInfo, std::string > getTopBlockInfo() const override
Get top block info from ledger state.
Definition: postgres_wsv_query.cpp:138
PostgresWsvQuery(soci::session &sql, logger::LoggerPtr log)
Definition: postgres_wsv_query.cpp:39
std::shared_ptr< Logger > LoggerPtr
Definition: logger_fwd.hpp:22
Definition: block_query.hpp:15
std::string AccountIdType
Type of account id.
Definition: types.hpp:38
iroha::expected::Result< size_t, std::string > countPeers() override
Fetch domains stored in ledger.
Definition: postgres_wsv_query.cpp:96
Definition: postgres_wsv_query.hpp:16
Definition: wsv_query.hpp:23
iroha::expected::Result< size_t, std::string > countTransactions() override
Fetch number of valid transactions in ledger.
Definition: postgres_wsv_query.cpp:106
iroha::expected::Result< size_t, std::string > countDomains() override
Fetch number of domains in ledger.
Definition: postgres_wsv_query.cpp:101
boost::optional< std::shared_ptr< shared_model::interface::Peer > > getPeerByPublicKey(shared_model::interface::types::PublicKeyHexStringView public_key) override
Definition: postgres_wsv_query.cpp:113