query/include/matador/query/criteria_evaluator.hpp

41 lines
1.2 KiB
C++

#ifndef MATADOR_CRITERIA_EVALUATOR_HPP
#define MATADOR_CRITERIA_EVALUATOR_HPP
#include "matador/query/criteria/abstract_criteria.hpp"
#include "matador/query/criteria/criteria_visitor.hpp"
#include "matador/query/criteria/criteria_utils.hpp"
#include <string>
namespace matador::sql {
class dialect;
struct query_context;
}
namespace matador::query {
class criteria_evaluator final : public criteria_visitor {
public:
criteria_evaluator(const sql::dialect &d, sql::query_context &query);
std::string evaluate(const abstract_criteria &node);
void visit(const between_criteria &node) override;
void visit(const binary_criteria &node) override;
void visit(const binary_column_criteria &node) override;
void visit(const collection_criteria &node) override;
void visit(const collection_query_criteria &node) override;
void visit(const like_criteria &node) override;
void visit(const logical_criteria &node) override;
void visit(const not_criteria &node) override;
private:
void evaluate_value(const criteria_value &value);
private:
const sql::dialect &dialect_;
sql::query_context &query_;
std::string clause_;
};
}
#endif //MATADOR_CRITERIA_EVALUATOR_HPP