query/include/matador/sql/resolver_service.hpp

28 lines
991 B
C++

#ifndef MATADOR_RESOLVER_SERVICE_HPP
#define MATADOR_RESOLVER_SERVICE_HPP
#include "matador/sql/producer_resolver_factory.hpp"
namespace matador::sql {
class resolver_service {
public:
template<class Type>
std::shared_ptr<object::object_resolver<Type>> object_resolver() const {
return object_resolver_factory_.resolver<Type>();
}
template<class Type>
std::shared_ptr<object::collection_resolver<Type>> collection_resolver(const std::type_index &root_type, const std::string &collection_name) const {
return collection_resolver_factory_.resolver<Type>(root_type, collection_name);
}
void register_object_resolver(std::shared_ptr<object::abstract_type_resolver> &&resolver);
void register_collection_resolver(std::shared_ptr<object::abstract_collection_resolver>&& resolver);
private:
sql::producer_resolver_factory object_resolver_factory_;
sql::producer_collection_resolver_factory collection_resolver_factory_;
};
}
#endif // MATADOR_RESOLVER_SERVICE_HPP