54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#ifndef QUERY_QUERY_COMPILER_HPP
|
|
#define QUERY_QUERY_COMPILER_HPP
|
|
|
|
#include "matador/sql/query_part_visitor.hpp"
|
|
#include "matador/sql/query_parts.hpp"
|
|
#include "matador/sql/query_context.hpp"
|
|
|
|
#include <typeindex>
|
|
#include <string>
|
|
|
|
namespace matador::sql {
|
|
|
|
class dialect;
|
|
|
|
struct query_data;
|
|
|
|
class query_compiler : public query_part_visitor
|
|
{
|
|
public:
|
|
explicit query_compiler(const sql::dialect& d);
|
|
|
|
query_context compile(const query_data *data);
|
|
|
|
private:
|
|
void visit(query_select_part &select_part) override;
|
|
void visit(query_from_part &from_part) override;
|
|
void visit(query_join_part &join_part) override;
|
|
void visit(query_on_part &on_part) override;
|
|
void visit(query_where_part &where_part) override;
|
|
void visit(query_group_by_part &group_by_part) override;
|
|
void visit(query_order_by_part &order_by_part) override;
|
|
void visit(query_order_by_asc_part &order_by_asc_part) override;
|
|
void visit(query_order_by_desc_part &order_by_desc_part) override;
|
|
|
|
void visit(query_insert_part &insert_part) override;
|
|
void visit(query_values_part &values_part) override;
|
|
|
|
void visit(query_update_part &update_part) override;
|
|
|
|
void visit(query_delete_part &delete_part) override;
|
|
|
|
void visit(query_create_part &create_part) override;
|
|
|
|
void visit(query_drop_part &drop_part) override;
|
|
|
|
private:
|
|
const sql::dialect &dialect_;
|
|
query_context query_;
|
|
};
|
|
|
|
}
|
|
|
|
#endif //QUERY_QUERY_COMPILER_HPP
|