22 #include <boost/optional.hpp> 24 #include <couchbase/internal/nlohmann/json.hpp> 25 #include <couchbase/support.hxx> 29 namespace transactions
32 class transaction_links
35 boost::optional<std::string> atr_id_;
36 boost::optional<std::string> atr_bucket_name_;
37 boost::optional<std::string> atr_scope_name_;
38 boost::optional<std::string> atr_collection_name_;
40 boost::optional<std::string> staged_transaction_id_;
41 boost::optional<std::string> staged_attempt_id_;
42 boost::optional<nlohmann::json> staged_content_;
45 boost::optional<std::string> cas_pre_txn_;
46 boost::optional<std::string> revid_pre_txn_;
47 boost::optional<uint32_t> exptime_pre_txn_;
48 boost::optional<std::string> crc32_of_staging_;
49 boost::optional<std::string> op_;
50 boost::optional<nlohmann::json> forward_compat_;
56 boost::optional<std::string> atr_bucket_name,
57 boost::optional<std::string> atr_scope_name,
58 boost::optional<std::string> atr_collection_name,
59 boost::optional<std::string> staged_transaction_id,
60 boost::optional<std::string> staged_attempt_id,
61 boost::optional<nlohmann::json> staged_content,
62 boost::optional<std::string> cas_pre_txn,
63 boost::optional<std::string> revid_pre_txn,
64 boost::optional<uint32_t> exptime_pre_txn,
65 boost::optional<std::string> crc32_of_staging,
66 boost::optional<std::string> op,
67 boost::optional<nlohmann::json> forward_compat,
69 : atr_id_(std::move(atr_id))
70 , atr_bucket_name_(std::move(atr_bucket_name))
71 , atr_scope_name_(std::move(atr_scope_name))
72 , atr_collection_name_(std::move(atr_collection_name))
73 , staged_transaction_id_(std::move(staged_transaction_id))
74 , staged_attempt_id_(std::move(staged_attempt_id))
75 , staged_content_(std::move(staged_content))
76 , cas_pre_txn_(std::move(cas_pre_txn))
77 , revid_pre_txn_(std::move(revid_pre_txn))
78 , exptime_pre_txn_(exptime_pre_txn)
79 , crc32_of_staging_(std::move(crc32_of_staging))
81 , forward_compat_(forward_compat)
82 , is_deleted_(is_deleted)
93 CB_NODISCARD
bool has_staged_content()
const 95 return !!(staged_content_);
97 CB_NODISCARD
bool is_document_being_removed()
const 99 return (!!op_ && *op_ ==
"remove");
102 CB_NODISCARD
bool has_staged_write()
const 104 return !!(staged_attempt_id_);
107 CB_NODISCARD boost::optional<std::string> atr_id()
const 112 CB_NODISCARD boost::optional<std::string> atr_bucket_name()
const 114 return atr_bucket_name_;
117 CB_NODISCARD boost::optional<std::string> atr_scope_name()
const 119 return atr_scope_name_;
122 CB_NODISCARD boost::optional<std::string> atr_collection_name()
const 124 return atr_collection_name_;
127 CB_NODISCARD boost::optional<std::string> staged_transaction_id()
const 129 return staged_transaction_id_;
132 CB_NODISCARD boost::optional<std::string> staged_attempt_id()
const 134 return staged_attempt_id_;
137 CB_NODISCARD boost::optional<std::string> cas_pre_txn()
const 142 CB_NODISCARD boost::optional<std::string> revid_pre_txn()
const 144 return revid_pre_txn_;
147 CB_NODISCARD boost::optional<uint32_t> exptime_pre_txn()
const 149 return exptime_pre_txn_;
152 CB_NODISCARD boost::optional<std::string> op()
const 157 CB_NODISCARD boost::optional<std::string> crc32_of_staging()
const 159 return crc32_of_staging_;
162 template<
typename Content>
163 CB_NODISCARD Content staged_content()
const 165 return staged_content_ ? staged_content_->get<Content>() : Content();
168 CB_NODISCARD boost::optional<nlohmann::json> forward_compat()
const 170 return forward_compat_;
173 CB_NODISCARD
bool is_deleted()
const 178 friend std::ostream& operator<<(std::ostream& os,
const transaction_links& links);
181 std::ostream& operator<<(std::ostream& os,
const transaction_links& links);
Definition: bucket.hxx:33
CB_NODISCARD bool is_document_in_transaction() const
Definition: transaction_links.hxx:90
Definition: transaction_links.hxx:33