#include "matador/sql/producer_resolver_factory.hpp" namespace matador::sql { std::shared_ptr 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 &&resolver) { resolvers_[resolver->type()] = std::move(resolver); } std::shared_ptr 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 object::collection_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&& resolver) { const object::collection_composite_key key{resolver->root_type(), resolver->type(), resolver->collection_name()}; resolvers_[key] = std::move(resolver); } } // namespace matador::sql