From a2a6448e03842ac9d4c4c982c09ff2402d0bd203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Mon, 16 Feb 2026 11:28:49 +0100 Subject: [PATCH] introduced object_state enum in object_proxy --- include/matador/object/object_proxy.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/matador/object/object_proxy.hpp b/include/matador/object/object_proxy.hpp index 4934604..c317fe4 100644 --- a/include/matador/object/object_proxy.hpp +++ b/include/matador/object/object_proxy.hpp @@ -11,6 +11,13 @@ #include namespace matador::object { +enum class object_state : uint8_t { + Transient, + Persistent, + Detached, + Removed +}; + template class object_proxy final { public: @@ -49,6 +56,13 @@ public: [[nodiscard]] const utils::identifier &primary_key() const { return pk_; } void primary_key(const utils::identifier &pk) { pk_ = pk; } + bool is_persistent() const { return state_ == object_state::Persistent; } + bool is_transient() const { return state_ == object_state::Transient; } + bool is_detached() const { return state_ == object_state::Detached; } + bool is_removed() const { return state_ == object_state::Removed; } + void change_state(const object_state state) { + state_ = state; + } private: Type* resolve() const { if (obj_) { @@ -72,6 +86,7 @@ private: std::shared_ptr obj_{}; std::weak_ptr> resolver_{}; utils::identifier pk_{}; + object_state state_{object_state::Transient}; mutable std::mutex mutex_{}; }; }