implemented lazy loading for object_ptr and belongs_to

This commit is contained in:
2026-01-15 12:40:54 +01:00
parent db8e137c11
commit 7626331866
81 changed files with 1790 additions and 927 deletions
+8 -5
View File
@@ -15,14 +15,19 @@ add_library(matador-core STATIC
../../include/matador/net/socket_interrupter.hpp
../../include/matador/object/attribute.hpp
../../include/matador/object/basic_object_info.hpp
../../include/matador/object/basic_repository.hpp
../../include/matador/object/error_code.hpp
../../include/matador/object/foreign_node_completer.hpp
../../include/matador/object/internal/observer_list_copy_creator.hpp
../../include/matador/object/internal/observer_list_creator.hpp
../../include/matador/object/many_to_many_relation.hpp
../../include/matador/object/object.hpp
../../include/matador/object/object_generator.hpp
../../include/matador/object/object_info.hpp
../../include/matador/object/object_proxy.hpp
../../include/matador/object/object_ptr.hpp
../../include/matador/object/object_resolver.hpp
../../include/matador/object/object_resolver_factory.hpp
../../include/matador/object/observer.hpp
../../include/matador/object/primary_key_resolver.hpp
../../include/matador/object/relation_completer.hpp
@@ -31,7 +36,6 @@ add_library(matador-core STATIC
../../include/matador/object/repository_node.hpp
../../include/matador/object/repository_node_iterator.hpp
../../include/matador/object/restriction.hpp
../../include/matador/sql/statement_cache.hpp
../../include/matador/utils/access.hpp
../../include/matador/utils/attribute_reader.hpp
../../include/matador/utils/attribute_writer.hpp
@@ -53,6 +57,7 @@ add_library(matador-core STATIC
../../include/matador/utils/file.hpp
../../include/matador/utils/foreign_attributes.hpp
../../include/matador/utils/identifier.hpp
../../include/matador/utils/identifier_to_value_converter.hpp
../../include/matador/utils/leader_follower_thread_pool.hpp
../../include/matador/utils/library.hpp
../../include/matador/utils/macro_map.hpp
@@ -78,6 +83,7 @@ add_library(matador-core STATIC
logger/rotating_file_sink.cpp
object/attribute.cpp
object/basic_object_info.cpp
object/basic_repository.cpp
object/error_code.cpp
object/foreign_node_completer.cpp
object/object.cpp
@@ -95,6 +101,7 @@ add_library(matador-core STATIC
utils/file.cpp
utils/foreign_attributes.cpp
utils/identifier.cpp
utils/identifier_to_value_converter.cpp
utils/leader_follower_thread_pool.cpp
utils/library.cpp
utils/message_bus.cpp
@@ -106,10 +113,6 @@ add_library(matador-core STATIC
utils/uuid.cpp
utils/value.cpp
utils/version.cpp
../../include/matador/object/internal/observer_list_creator.hpp
../../include/matador/object/internal/observer_list_copy_creator.hpp
../../include/matador/object/basic_repository.hpp
object/basic_repository.cpp
)
target_link_libraries(matador-core ${CMAKE_DL_LIBS})
@@ -0,0 +1,53 @@
#include "matador/utils/identifier_to_value_converter.hpp"
namespace matador::utils {
value identifier_to_value_converter::convert(const identifier &id) {
id.serialize(*this);
return value_;
}
void identifier_to_value_converter::serialize(int8_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(int16_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(int32_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(int64_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(uint8_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(uint16_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(uint32_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(uint64_t &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(const char *x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(std::string &x, const field_attributes &) {
value_ = x;
}
void identifier_to_value_converter::serialize(null_type_t &/*x*/, const field_attributes &) {
value_.type(basic_type::Null);
}
}
+8
View File
@@ -39,6 +39,14 @@ value &value::operator=(value &&x) noexcept {
return *this;
}
bool value::operator==(const value &rhs) const {
return type_ == rhs.type_ && value_ == rhs.value_;
}
bool value::operator!=(const value &rhs) const {
return !operator==(rhs);
}
std::string value::str() const {
return as<std::string>().value_or("");
}