31 #ifndef LEDGER_CORE_OPERATIONQUERY_H 32 #define LEDGER_CORE_OPERATIONQUERY_H 34 #include <api/OperationQuery.hpp> 35 #include <api/OperationOrderKey.hpp> 36 #include <database/query/QueryBuilder.h> 37 #include <database/DatabaseSessionPool.hpp> 38 #include <async/DedicatedContext.hpp> 39 #include "Operation.h" 40 #include "../common/api_impl/OperationApi.h" 41 #include "AbstractAccount.hpp" 42 #include <unordered_map> 43 #include "api_impl/OperationApi.h" 47 class AbstractAccount;
51 OperationQuery(
const std::shared_ptr<api::QueryFilter>& headFilter,
52 const std::shared_ptr<DatabaseSessionPool>& pool,
53 const std::shared_ptr<api::ExecutionContext>& context,
54 const std::shared_ptr<api::ExecutionContext>& mainContext
56 std::shared_ptr<api::OperationQuery>
addOrder(api::OperationOrderKey key,
bool descending)
override;
57 std::shared_ptr<api::QueryFilter>
filter()
override;
58 std::shared_ptr<api::OperationQuery>
offset(int64_t from)
override;
59 std::shared_ptr<api::OperationQuery>
limit(int64_t count)
override;
60 std::shared_ptr<api::OperationQuery>
complete()
override;
61 std::shared_ptr<api::OperationQuery>
partial()
override;
63 void execute(
const std::shared_ptr<api::OperationListCallback> &callback)
override;
66 std::shared_ptr<OperationQuery> registerAccount(
const std::shared_ptr<AbstractAccount>& account);
69 void performExecute(std::vector<std::shared_ptr<api::Operation>>& operations);
70 void inflateCompleteTransaction(soci::session& sql,
const std::string &accountUid,
OperationApi& operation);
71 void inflateBitcoinLikeTransaction(soci::session& sql,
const std::string &accountUid,
OperationApi& operation);
72 void inflateRippleLikeTransaction(soci::session& sql,
OperationApi& operation);
73 void inflateTezosLikeTransaction(soci::session& sql,
OperationApi& operation);
74 void inflateEthereumLikeTransaction(soci::session& sql,
OperationApi& operation);
75 void inflateMoneroLikeTransaction(soci::session& sql,
OperationApi& operation);
78 virtual soci::rowset<soci::row> performExecute(soci::session &sql);
80 std::shared_ptr<api::QueryFilter> _headFilter;
81 bool _fetchCompleteOperation;
82 std::shared_ptr<api::ExecutionContext> _mainContext;
83 std::shared_ptr<DatabaseSessionPool> _pool;
84 std::unordered_map<std::string, std::shared_ptr<AbstractAccount>> _accounts;
90 #endif //LEDGER_CORE_OPERATIONQUERY_H std::shared_ptr< api::OperationQuery > partial() override
Definition: OperationQuery.cpp:105
Definition: QueryBuilder.h:42
Definition: OperationQuery.h:48
Definition: Deffered.hpp:49
Definition: OperationApi.h:41
std::shared_ptr< api::OperationQuery > complete() override
Definition: OperationQuery.cpp:100
Definition: OperationQuery.hpp:24
Definition: Account.cpp:8
std::shared_ptr< api::OperationQuery > offset(int64_t from) override
Definition: OperationQuery.cpp:90
std::shared_ptr< api::OperationQuery > limit(int64_t count) override
Definition: OperationQuery.cpp:95
std::shared_ptr< api::QueryFilter > filter() override
Definition: OperationQuery.cpp:86
Definition: DedicatedContext.hpp:39
std::shared_ptr< api::OperationQuery > addOrder(api::OperationOrderKey key, bool descending) override
Definition: OperationQuery.cpp:56