Ditto 4.11.1
 
Loading...
Searching...
No Matches
Transaction.hpp
1#ifndef _DITTO_TRANSACTION_
2#define _DITTO_TRANSACTION_
3
4#include "QueryResult.hpp"
5
6#include <string>
7
8namespace ditto {
9
10class Store;
11
26private:
27 bool read_only = false;
28 std::string hint;
29
30public:
32 TransactionOptions() = default;
33
38 TransactionOptions &set_read_only(bool read_only);
39
41 bool get_read_only() const;
42
49 TransactionOptions &set_hint(std::string hint);
50
52 const std::string &get_hint() const;
53};
54
58 std::string id;
59
62 std::string hint;
63
69 bool is_read_only = false;
70};
71
73void from_json(const nlohmann::json &j, TransactionInfo &c);
74
76void to_json(nlohmann::json &j, const TransactionInfo &c);
77
80enum class TransactionCompletionAction {
82 commit,
83
85 rollback,
86};
87
88// clang-format off
103// clang-format on
104
105namespace internal {
106void transaction_execute_cb(
107 void *env_ptr, dittoffi_result_dittoffi_query_result_ptr_t ffi_result);
108}
109
110class Transaction {
111 friend class Store;
112
113 friend void ditto::internal::transaction_execute_cb(
114 void *env_ptr, dittoffi_result_dittoffi_query_result_ptr_t ffi_result);
115
116 struct Impl;
117 std::unique_ptr<Impl> impl;
118
119 explicit Transaction(Impl *impl);
120
121 static TransactionCompletionAction
122 perform(Store &store, const TransactionOptions &options,
123 const std::function<TransactionCompletionAction(Transaction &)> &fn);
124
125#ifdef DITTO_INTERNAL_TESTING
126public:
127#endif
128 TransactionCompletionAction complete(TransactionCompletionAction action);
129
130private:
131public:
133 ~Transaction();
134
135 Transaction(const Transaction &) = delete;
136 Transaction &operator=(const Transaction &) = delete;
137
140
142 Store &get_store() const;
143
166 QueryResult execute(std::string query, nlohmann::json query_args = nullptr);
167};
168
169} // namespace ditto
170
171#endif
Represents the returned results when executing a DQL query, containing a QueryResultItem for each mat...
Definition QueryResult.hpp:121
Provides access to Collections and a transaction API.
Definition Store.hpp:63
TransactionInfo get_info() const
Provides information about the transaction.
Definition Transaction.cpp:241
QueryResult execute(std::string query, nlohmann::json query_args=nullptr)
Executes a DQL query and returns matching items as a query result.
Definition Transaction.cpp:245
Store & get_store() const
The Store this transaction belongs to.
Definition Transaction.cpp:243
~Transaction()
Destructor.
Definition Transaction.cpp:239
Options for configuring a transaction.
Definition Transaction.hpp:25
const std::string & get_hint() const
Get hint value.
Definition TransactionOptions.cpp:17
TransactionOptions & set_hint(std::string hint)
Set a hint for the transaction, which is logged.
Definition TransactionOptions.cpp:12
TransactionOptions()=default
Constructor sets read_only false and no hint
bool get_read_only() const
Get read_only value.
Definition TransactionOptions.cpp:10
TransactionOptions & set_read_only(bool read_only)
Set a flag indicating whether the transaction is read-only.
Definition TransactionOptions.cpp:5
Represents a transaction in the Ditto store.
Definition Transaction.hpp:105
Definition Transaction.cpp:80
Encapsulates information about a transaction.
Definition Transaction.hpp:56
std::string id
A globally unique ID of the transaction.
Definition Transaction.hpp:58
std::string hint
The user hint passed when creating the transaction, useful for debugging and testing.
Definition Transaction.hpp:62
bool is_read_only
Indicates whether mutating DQL statements can be executed in the transaction.
Definition Transaction.hpp:69