#ifndef MATADOR_RESOLVER_FACTORY_HPP #define MATADOR_RESOLVER_FACTORY_HPP #include #include "matador/object/abstract_collection_resolver.hpp" #include "matador/object/object_resolver_factory.hpp" #include "matador/object/collection_resolver_factory.hpp" #include "matador/object/collection_utils.hpp" namespace matador::sql { class executor; class producer_resolver_factory : public object::object_resolver_factory { public: [[nodiscard]] std::shared_ptr acquire_object_resolver(const std::type_index &type) const override; void register_object_resolver(std::shared_ptr &&resolver) override; private: std::unordered_map> resolvers_; }; class producer_collection_resolver_factory : public object::collection_resolver_factory { public: [[nodiscard]] std::shared_ptr acquire_collection_resolver(const std::type_index& root_type, const std::type_index& element_type, const std::string& collection_name) const override; void register_collection_resolver(std::shared_ptr&& resolver) override; private: std::unordered_map, object::collection_composite_key_hash> resolvers_; }; } #endif //MATADOR_RESOLVER_FACTORY_HPP