removed query directory
This commit is contained in:
parent
fa7ff832c9
commit
5a3cdc8645
|
|
@ -1,25 +0,0 @@
|
|||
#ifndef QUERY_COLUMN_HPP
|
||||
#define QUERY_COLUMN_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class column {
|
||||
public:
|
||||
column(const char *name); // NOLINT(*-explicit-constructor)
|
||||
column(std::string name); // NOLINT(*-explicit-constructor)
|
||||
column(std::string table_name, std::string name, std::string as);
|
||||
|
||||
column& as(std::string a);
|
||||
|
||||
std::string table;
|
||||
std::string name;
|
||||
std::string alias;
|
||||
};
|
||||
|
||||
column operator "" _col(const char *name, size_t len);
|
||||
|
||||
}
|
||||
|
||||
#endif //QUERY_COLUMN_HPP
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef QUERY_QUERY_HPP
|
||||
#define QUERY_QUERY_HPP
|
||||
|
||||
#include "matador/query/query_parts.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class connection;
|
||||
class query
|
||||
{
|
||||
public:
|
||||
explicit query(connection &c);
|
||||
|
||||
query& select(const std::vector<column> &columns);
|
||||
query& from(const std::string &table, const std::string &as = "");
|
||||
|
||||
private:
|
||||
connection &connection_;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_HPP
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef QUERY_QUERY_BUILDER_HPP
|
||||
#define QUERY_QUERY_BUILDER_HPP
|
||||
|
||||
#include "matador/query/column.hpp"
|
||||
#include "matador/query/query_intermediates.hpp"
|
||||
|
||||
#include "matador/sql/schema.hpp"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class query_builder
|
||||
{
|
||||
public:
|
||||
explicit query_builder(const std::shared_ptr<sql::schema> &scm);
|
||||
query_select_intermediate select(std::initializer_list<column> columns);
|
||||
|
||||
private:
|
||||
std::shared_ptr<sql::schema> schema_;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_BUILDER_HPP
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
#ifndef QUERY_QUERY_COMPILER_HPP
|
||||
#define QUERY_QUERY_COMPILER_HPP
|
||||
|
||||
#include "matador/query/query_part_visitor.hpp"
|
||||
#include "matador/query/query_parts.hpp"
|
||||
|
||||
|
||||
#include <typeindex>
|
||||
#include <string>
|
||||
|
||||
namespace matador::sql {
|
||||
class dialect;
|
||||
}
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
struct query_data;
|
||||
|
||||
class query_compiler : public query_part_visitor
|
||||
{
|
||||
public:
|
||||
explicit query_compiler(sql::dialect& d);
|
||||
|
||||
std::string compile(const query_data *data);
|
||||
|
||||
private:
|
||||
void visit(query_select_part &select_part) override;
|
||||
void visit(query_from_part &from_part) override;
|
||||
|
||||
private:
|
||||
sql::dialect &dialect_;
|
||||
std::string sql_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif //QUERY_QUERY_COMPILER_HPP
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef QUERY_QUERY_DATA_HPP
|
||||
#define QUERY_QUERY_DATA_HPP
|
||||
|
||||
#include "matador/query/query_parts.hpp"
|
||||
#include "matador/query/sql_commands.hpp"
|
||||
#include "matador/query/table.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
struct query_data
|
||||
{
|
||||
SqlCommands command;
|
||||
std::vector<std::unique_ptr<query_part>> parts;
|
||||
std::vector<column> columns;
|
||||
std::unordered_map<std::type_index, table_data> table_map_by_index;
|
||||
using table_data_ref = std::reference_wrapper<table_data>;
|
||||
std::unordered_map<std::string, table_data_ref> table_map_by_name;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_DATA_HPP
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
#ifndef QUERY_QUERY_INTERMEDIATES_HPP
|
||||
#define QUERY_QUERY_INTERMEDIATES_HPP
|
||||
|
||||
#include "matador/sql/schema.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
namespace matador::sql {
|
||||
class basic_condition;
|
||||
}
|
||||
namespace matador::query {
|
||||
|
||||
class query_from_intermediate;
|
||||
class query_join_intermediate;
|
||||
class query_on_intermediate;
|
||||
class query_where_intermediate;
|
||||
class query_group_by_intermediate;
|
||||
class query_order_by_intermediate;
|
||||
class query_order_direction_intermediate;
|
||||
class query_offset_intermediate;
|
||||
class query_limit_intermediate;
|
||||
|
||||
class query_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_intermediate(const std::shared_ptr<sql::schema> &scm);
|
||||
|
||||
protected:
|
||||
sql::schema& schema() const;
|
||||
|
||||
private:
|
||||
std::shared_ptr<sql::schema> schema_;
|
||||
};
|
||||
|
||||
class query_select_finish_intermediate : public query_intermediate
|
||||
{
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
void compile();
|
||||
};
|
||||
|
||||
class query_select_intermediate : public query_intermediate
|
||||
{
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_from_intermediate from(const std::string &table, const std::string &as = "");
|
||||
};
|
||||
|
||||
class query_from_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
|
||||
query_join_intermediate join(const std::string &join_table_name, const std::string &as);
|
||||
query_where_intermediate where(const sql::basic_condition &cond);
|
||||
query_group_by_intermediate group_by(const std::string &name);
|
||||
query_order_by_intermediate order_by(const std::string &name);
|
||||
};
|
||||
|
||||
class query_join_intermediate : public query_intermediate
|
||||
{
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_on_intermediate on(const std::string &column, const std::string &join_column);
|
||||
};
|
||||
|
||||
class query_on_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
|
||||
query_join_intermediate join(const std::string &join_table_name, const std::string &as);
|
||||
query_where_intermediate where(const sql::basic_condition &cond);
|
||||
query_group_by_intermediate group_by(const std::string &name);
|
||||
query_order_by_intermediate order_by(const std::string &name);
|
||||
};
|
||||
|
||||
class query_where_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
|
||||
query_group_by_intermediate group_by(const std::string &name);
|
||||
query_order_by_intermediate order_by(const std::string &name);
|
||||
};
|
||||
|
||||
class query_group_by_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
|
||||
query_order_by_intermediate order_by(const std::string &name);
|
||||
};
|
||||
|
||||
class query_order_by_intermediate : public query_intermediate
|
||||
{
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_order_direction_intermediate asc();
|
||||
query_order_direction_intermediate desc();
|
||||
};
|
||||
|
||||
class query_order_direction_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
|
||||
query_offset_intermediate offset(size_t offset);
|
||||
query_limit_intermediate limit(size_t limit);
|
||||
};
|
||||
|
||||
class query_offset_intermediate : public query_intermediate
|
||||
{
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_limit_intermediate limit(size_t limit);
|
||||
};
|
||||
|
||||
class query_limit_intermediate : public query_select_finish_intermediate
|
||||
{
|
||||
public:
|
||||
using query_select_finish_intermediate::query_intermediate;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_INTERMEDIATES_HPP
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef QUERY_QUERY_PART_VISITOR_HPP
|
||||
#define QUERY_QUERY_PART_VISITOR_HPP
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class query_select_part;
|
||||
class query_from_part;
|
||||
|
||||
class query_part_visitor
|
||||
{
|
||||
public:
|
||||
virtual ~query_part_visitor() = default;
|
||||
|
||||
virtual void visit(query_select_part &select_part) = 0;
|
||||
virtual void visit(query_from_part &from_part) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_PART_VISITOR_HPP
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
#ifndef QUERY_QUERY_PARTS_HPP
|
||||
#define QUERY_QUERY_PARTS_HPP
|
||||
|
||||
#include "matador/query/query_part_visitor.hpp"
|
||||
#include "matador/query/column.hpp"
|
||||
|
||||
#include "matador/sql/dialect.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class query_part
|
||||
{
|
||||
protected:
|
||||
explicit query_part(sql::dialect::token_t token);
|
||||
|
||||
public:
|
||||
virtual ~query_part() = default;
|
||||
virtual void accept(query_part_visitor &visitor) = 0;
|
||||
|
||||
protected:
|
||||
sql::dialect::token_t token_;
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents the SQL SELECT part
|
||||
*/
|
||||
class query_select_part : public query_part
|
||||
{
|
||||
public:
|
||||
explicit query_select_part(std::vector<column> columns);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::vector<column> columns_;
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents the SQL FROM part
|
||||
*/
|
||||
class query_from_part : public query_part
|
||||
{
|
||||
public:
|
||||
explicit query_from_part(std::string table_name);
|
||||
query_from_part(std::string table_name, std::string as);
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string table_;
|
||||
std::string alias_;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_PARTS_HPP
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
#ifndef QUERY_SQL_COMMANDS_HPP
|
||||
#define QUERY_SQL_COMMANDS_HPP
|
||||
|
||||
#include "matador/utils/enum_mapper.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
enum class SqlCommands
|
||||
{
|
||||
UNKNOWN, /**< Unknown query command */
|
||||
CREATE, /**< Create query command */
|
||||
DROP, /**< Drop query command */
|
||||
SELECT, /**< Select query command */
|
||||
INSERT, /**< Insert query command */
|
||||
UPDATE, /**< Update query command */
|
||||
REMOVE /**< Remove query command */
|
||||
};
|
||||
|
||||
static const utils::enum_mapper<SqlCommands> sql_command_enum({
|
||||
{SqlCommands::UNKNOWN, "unknown"},
|
||||
{SqlCommands::CREATE, "create"},
|
||||
{SqlCommands::DROP, "drop"},
|
||||
{SqlCommands::SELECT, "select"},
|
||||
{SqlCommands::INSERT, "insert"},
|
||||
{SqlCommands::UPDATE, "update"},
|
||||
{SqlCommands::REMOVE, "delete"}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
#endif //QUERY_SQL_COMMANDS_HPP
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef QUERY_TABLE_HPP
|
||||
#define QUERY_TABLE_HPP
|
||||
|
||||
#include <typeindex>
|
||||
#include <string>
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
struct table_data
|
||||
{
|
||||
std::type_index index;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_TABLE_HPP
|
||||
|
|
@ -94,28 +94,6 @@ set(SQL_HEADER
|
|||
../include/matador/sql/has_many_to_many_relation.hpp
|
||||
)
|
||||
|
||||
set(QUERY_SOURCES
|
||||
query/query.cpp
|
||||
query/query_compiler.cpp
|
||||
query/query_parts.cpp
|
||||
query/column.cpp
|
||||
query/query_builder.cpp
|
||||
query/query_intermediates.cpp
|
||||
)
|
||||
|
||||
set(QUERY_HEADER
|
||||
../include/matador/query/query.hpp
|
||||
../include/matador/query/query_part_visitor.hpp
|
||||
../include/matador/query/query_compiler.hpp
|
||||
../include/matador/query/query_parts.hpp
|
||||
../include/matador/query/column.hpp
|
||||
../include/matador/query/query_builder.hpp
|
||||
../include/matador/query/query_intermediates.hpp
|
||||
../include/matador/query/sql_commands.hpp
|
||||
../include/matador/query/query_data.hpp
|
||||
../include/matador/query/table.hpp
|
||||
)
|
||||
|
||||
set(UTILS_HEADER
|
||||
../include/matador/utils/field_attributes.hpp
|
||||
../include/matador/utils/string.hpp
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
#include "matador/query/column.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
column::column(const char *name)
|
||||
: name(name) {}
|
||||
|
||||
column::column(std::string name)
|
||||
: name(std::move(name)) {}
|
||||
|
||||
column::column(std::string table_name, std::string name, std::string as)
|
||||
: table(std::move(table_name))
|
||||
, name(std::move(name))
|
||||
, alias(std::move(as)) {}
|
||||
|
||||
column& column::as(std::string a) {
|
||||
alias = std::move(a);
|
||||
return *this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#include "matador/query/query.hpp"
|
||||
|
||||
namespace matador::sql {
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
#include "matador/query/query_builder.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
query_builder::query_builder(const std::shared_ptr<sql::schema> &scm)
|
||||
: schema_(scm) {}
|
||||
|
||||
query_select_intermediate query_builder::select(std::initializer_list<column> columns)
|
||||
{
|
||||
return query_select_intermediate{schema_};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
#include "matador/query/query_compiler.hpp"
|
||||
#include "matador/query/query_data.hpp"
|
||||
#include "matador/query/column.hpp"
|
||||
|
||||
#include "matador/sql/dialect.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
query_compiler::query_compiler(sql::dialect &d)
|
||||
: dialect_(d)
|
||||
{}
|
||||
|
||||
std::string query_compiler::compile(const query_data *data)
|
||||
{
|
||||
sql_.clear();
|
||||
for (const auto &part : data->parts) {
|
||||
part->accept(*this);
|
||||
}
|
||||
|
||||
return sql_;
|
||||
}
|
||||
|
||||
void query_compiler::visit(query_select_part &select_part)
|
||||
{
|
||||
auto ci = "name"_col.as("c01");
|
||||
}
|
||||
|
||||
void query_compiler::visit(query_from_part &from_part)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#include "matador/query/query_intermediates.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
query_intermediate::query_intermediate(const std::shared_ptr<sql::schema> &scm)
|
||||
: schema_(scm) {}
|
||||
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#include "matador/query/query_parts.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
query_part::query_part(sql::dialect::token_t token)
|
||||
: token_(token) {}
|
||||
|
||||
query_select_part::query_select_part(std::vector<column> columns)
|
||||
: query_part(sql::dialect::token_t::SELECT)
|
||||
, columns_(std::move(columns)) {}
|
||||
|
||||
void query_select_part::accept(query_part_visitor &visitor)
|
||||
{
|
||||
visitor.visit(*this);
|
||||
}
|
||||
|
||||
query_from_part::query_from_part(std::string table_name)
|
||||
: query_part(sql::dialect::token_t::FROM)
|
||||
, table_(std::move(table_name)) {}
|
||||
|
||||
query_from_part::query_from_part(std::string table_name, std::string as)
|
||||
: query_part(sql::dialect::token_t::FROM)
|
||||
, table_(std::move(table_name))
|
||||
, alias_(std::move(as)) {}
|
||||
|
||||
void query_from_part::accept(query_part_visitor &visitor)
|
||||
{
|
||||
visitor.visit(*this);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue