added join_column_index and inverse_join_column_index to object and table classes
This commit is contained in:
@@ -23,6 +23,13 @@ public:
|
||||
const std::string& name,
|
||||
creator_func<Type> creator,
|
||||
std::vector<std::unique_ptr<observer<Type>>>&& observers);
|
||||
template < typename Type, template<typename> typename... Observers >
|
||||
static std::unique_ptr<repository_node> make_relation_node(basic_repository& repo,
|
||||
const std::string& name,
|
||||
const std::string& join_column,
|
||||
const std::string& inverse_join_column,
|
||||
creator_func<Type> creator,
|
||||
std::vector<std::unique_ptr<observer<Type>>>&& observers);
|
||||
|
||||
explicit repository_node(basic_repository& repo);
|
||||
repository_node(const repository_node& other) = delete;
|
||||
@@ -101,5 +108,28 @@ std::unique_ptr<repository_node> repository_node::make_node(basic_repository &re
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
template<typename Type, template <typename> class ... Observers>
|
||||
std::unique_ptr<repository_node> repository_node::make_relation_node(basic_repository &repo,
|
||||
const std::string &name,
|
||||
const std::string &join_column,
|
||||
const std::string &inverse_join_column,
|
||||
creator_func<Type> creator,
|
||||
std::vector<std::unique_ptr<observer<Type>>> &&observers) {
|
||||
const std::type_index ti(typeid(Type));
|
||||
auto node = std::unique_ptr<repository_node>(new repository_node(repo, name, ti));
|
||||
|
||||
internal::observer_list_creator<Type, Observers...>::create_missing(observers);
|
||||
|
||||
auto obj = object_generator::generate<Type>(creator(), repo, name, join_column, inverse_join_column);
|
||||
node->info_.reset(std::make_unique<object_info<Type>>(
|
||||
*node,
|
||||
obj,
|
||||
std::move(observers),
|
||||
std::forward<creator_func<Type>>(creator)
|
||||
).release());
|
||||
|
||||
return node;
|
||||
}
|
||||
}
|
||||
#endif //REPOSITORY_NODE_HPP
|
||||
|
||||
Reference in New Issue
Block a user