attribute_definition and object_definition progress
This commit is contained in:
@@ -17,17 +17,22 @@ public:
|
||||
using node_ptr = std::shared_ptr<repository_node>;
|
||||
|
||||
template < typename Type >
|
||||
static std::shared_ptr<repository_node> make_node(object::repository& tree, const std::string& name) {
|
||||
auto node = std::shared_ptr<repository_node>(new repository_node(tree, name, typeid(Type)));
|
||||
static std::shared_ptr<repository_node> make_node(repository& repo, const std::string& name) {
|
||||
auto node = std::shared_ptr<repository_node>(new repository_node(repo, name, typeid(Type)));
|
||||
|
||||
primary_key_resolver resolver;
|
||||
object_definition obj{name, {}};
|
||||
auto pk_info = resolver.resolve<Type>();
|
||||
auto ref_column = determine_reference_column(typeid(Type), name, pk_info, tree);
|
||||
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));
|
||||
}
|
||||
auto info = std::make_unique<object_info<Type>>(
|
||||
node,
|
||||
std::move(pk_info.pk),
|
||||
ref_column,
|
||||
object_definition{attribute_definition_generator::generate<Type>(tree)},
|
||||
std::move(obj),
|
||||
[]{ return std::make_unique<Type>(); }
|
||||
);
|
||||
node->info_ = std::move(info);
|
||||
@@ -87,11 +92,11 @@ private:
|
||||
|
||||
void unlink();
|
||||
|
||||
static utils::result<node_ptr, utils::error> make_and_attach_node(object::repository& tree, const std::string& name, const std::type_index& ti);
|
||||
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,
|
||||
const std::string& name,
|
||||
const primary_key_info& pk_info,
|
||||
object::repository& tree);
|
||||
object_definition& obj,
|
||||
const primary_key_info& pk_info,
|
||||
repository& repo);
|
||||
|
||||
private:
|
||||
friend class repository;
|
||||
@@ -100,7 +105,7 @@ private:
|
||||
friend class foreign_node_completer;
|
||||
friend class const_repository_node_iterator;
|
||||
|
||||
object::repository &repo_;
|
||||
repository &repo_;
|
||||
std::type_index type_index_;
|
||||
std::unique_ptr<basic_object_info> info_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user