query/source/orm/sql/producer_resolver_factory.cpp

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