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 
10 
11 #include <soci/soci.h>
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 
31  boost::optional<std::shared_ptr<shared_model::interface::Peer>>
32  getPeerByPublicKey(shared_model::interface::types::PublicKeyHexStringView
33  public_key) override;
34 
36  getTopBlockInfo() const override;
37 
38  private:
43  template <typename T, typename F>
44  auto execute(F &&f) -> boost::optional<soci::rowset<T>>;
45 
46  // TODO andrei 24.09.2018: IR-1718 Consistent soci::session fields in
47  // storage classes
48  std::unique_ptr<soci::session> psql_;
49  soci::session &sql_;
50  logger::LoggerPtr log_;
51  };
52  } // namespace ametsuchi
53 } // namespace iroha
54 
55 #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:56
boost::optional< std::vector< std::shared_ptr< shared_model::interface::Peer > > > getPeers() override
Definition: postgres_wsv_query.cpp:71
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:108
PostgresWsvQuery(soci::session &sql, logger::LoggerPtr log)
Definition: postgres_wsv_query.cpp:38
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
Definition: postgres_wsv_query.hpp:16
Definition: wsv_query.hpp:23
boost::optional< std::shared_ptr< shared_model::interface::Peer > > getPeerByPublicKey(shared_model::interface::types::PublicKeyHexStringView public_key) override
Definition: postgres_wsv_query.cpp:83