29 lines
1.3 KiB
C++
29 lines
1.3 KiB
C++
#include "matador/sql/producer_resolver_factory.hpp"
|
|
|
|
namespace matador::sql {
|
|
std::shared_ptr<object::abstract_type_resolver> producer_resolver_factory::acquire_object_resolver(const std::type_index &type) const {
|
|
if (const auto it = resolvers_.find(type); it != resolvers_.end()) {
|
|
return it->second;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
void producer_resolver_factory::register_object_resolver(std::shared_ptr<object::abstract_type_resolver> &&resolver) {
|
|
resolvers_[resolver->type()] = std::move(resolver);
|
|
}
|
|
std::shared_ptr<object::abstract_collection_resolver>
|
|
producer_collection_resolver_factory::acquire_collection_resolver(const std::type_index& root_type,
|
|
const std::type_index& element_type,
|
|
const std::string& collection_name) const {
|
|
const composite_key key{root_type, element_type, collection_name};
|
|
if (const auto it = resolvers_.find(key); it != resolvers_.end()) {
|
|
return it->second;
|
|
}
|
|
return nullptr;
|
|
}
|
|
void producer_collection_resolver_factory::register_collection_resolver(std::shared_ptr<object::abstract_collection_resolver>&& resolver) {
|
|
const composite_key key{resolver->root_type(), resolver->type(), resolver->collection_name()};
|
|
resolvers_[key] = std::move(resolver);
|
|
}
|
|
} // namespace matador::sql
|