compilation fixes

This commit is contained in:
Sascha Kühl
2025-11-19 16:17:25 +01:00
parent 9c42df3f83
commit 95c555d03a
20 changed files with 118 additions and 80 deletions
+12 -12
View File
@@ -21,18 +21,18 @@ public:
auto node = std::shared_ptr<repository_node>(new repository_node(repo, name, typeid(Type)));
primary_key_resolver resolver;
object_definition obj{name, {}};
auto obj = std::make_shared<object_definition>(name);
auto pk_info = resolver.resolve<Type>();
auto ref_column = determine_reference_column(typeid(Type), name, pk_info, repo);
const auto attributes = attribute_definition_generator::generate<Type>(repo);
for (auto&& attr : attributes) {
obj.append(std::move(attr));
obj->append(std::move(attr));
}
auto info = std::make_unique<object_info<Type>>(
node,
std::move(pk_info.pk),
ref_column,
std::move(obj),
obj,
[]{ return std::make_unique<Type>(); }
);
node->info_ = std::move(info);
@@ -41,8 +41,8 @@ public:
}
template < typename Type, typename CreatorFunc >
static utils::result<node_ptr, utils::error> make_relation_node(object::repository& tree, const std::string& name, CreatorFunc &&creator) {
const auto result = make_and_attach_node(tree, name, typeid(Type));
static utils::result<node_ptr, utils::error> make_relation_node(repository& repo, const std::string& name, CreatorFunc &&creator) {
const auto result = make_and_attach_node(repo, name, typeid(Type));
if (!result) {
return result;
}
@@ -50,7 +50,7 @@ public:
auto obj = creator();
auto info = std::make_unique<object_info<Type>>(
result.value(),
object_definition{attribute_definition_generator::generate(*obj, tree)},
std::make_shared<object_definition>(attribute_definition_generator::generate(*obj, repo)),
std::move(creator)
);
result.value()->info_ = std::move(info);
@@ -58,7 +58,7 @@ public:
return result;
}
static std::shared_ptr<repository_node> make_null_node(repository& tree);
static std::shared_ptr<repository_node> make_null_node(repository& repo);
repository_node(const repository_node& other) = delete;
repository_node(repository_node&& other) = default;
@@ -81,20 +81,20 @@ public:
return std::ref(static_cast<const object_info<Type>&>(*info_));
}
[[nodiscard]] const object::repository& schema() const;
[[nodiscard]] const repository& schema() const;
[[nodiscard]] bool has_children() const;
private:
explicit repository_node(object::repository& tree);
repository_node(object::repository& tree, const std::type_index& ti);
repository_node(object::repository& tree, std::string name, const std::type_index& ti);
explicit repository_node(repository& repo);
repository_node(repository& repo, const std::type_index& ti);
repository_node(repository& repo, std::string name, const std::type_index& ti);
void unlink();
static utils::result<node_ptr, utils::error> make_and_attach_node(repository& repo, const std::string& name, const std::type_index& ti);
static std::shared_ptr<attribute_definition> determine_reference_column(const std::type_index& ti,
object_definition& obj,
const std::shared_ptr<object_definition>& obj,
const primary_key_info& pk_info,
repository& repo);