#ifndef MATADOR_STATEMENT_OBJECT_RESOLVER_HPP #define MATADOR_STATEMENT_OBJECT_RESOLVER_HPP #include "matador/object/object_resolver.hpp" #include "matador/sql/statement.hpp" #include "matador/sql/internal/identifier_statement_binder.hpp" namespace matador::sql { template class statement_object_resolver : public object::object_resolver { public: explicit statement_object_resolver(statement stmt) : statement_(std::move(stmt)) {} std::shared_ptr resolve(const utils::identifier &id) override; protected: statement statement_; std::type_index index{typeid(Type)}; }; template std::shared_ptr statement_object_resolver::resolve(const utils::identifier &id) { identifier_statement_binder binder(statement_); binder.bind(id); auto result = statement_.template fetch_one(); if (!result) { return nullptr; } return std::make_shared(*result); } } #endif //MATADOR_STATEMENT_OBJECT_RESOLVER_HPP