added alter table command to fluent query builder (progress)
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
#ifndef MATADOR_QUERY_ALTER_INTERMEDIATE_HPP
|
||||
#define MATADOR_QUERY_ALTER_INTERMEDIATE_HPP
|
||||
|
||||
#include "matador/query/intermediates/query_alter_table_intermediate.hpp"
|
||||
#include "matador/query/intermediates/query_intermediate.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
class query_alter_intermediate : public query_intermediate {
|
||||
public:
|
||||
query_alter_intermediate();
|
||||
|
||||
query_alter_table_intermediate table(const sql::table &table) const;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //MATADOR_QUERY_ALTER_INTERMEDIATE_HPP
|
||||
@@ -0,0 +1,52 @@
|
||||
#ifndef MATADOR_QUERY_ALTER_TABLE_INTERMEDIATE_HPP
|
||||
#define MATADOR_QUERY_ALTER_TABLE_INTERMEDIATE_HPP
|
||||
|
||||
#include "executable_query.hpp"
|
||||
#include "matador/query/intermediates/query_intermediate.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
class query_add_primary_key_constraint_intermediate final : public query_intermediate {
|
||||
public:
|
||||
};
|
||||
|
||||
class query_add_foreign_key_constraint_intermediate final : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
executable_query references(const sql::table& table, const std::vector<sql::column>& columns = {});
|
||||
|
||||
private:
|
||||
sql::table table_;
|
||||
std::vector<sql::column> columns_;
|
||||
};
|
||||
|
||||
class query_add_key_constraint_intermediate final : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_add_primary_key_constraint_intermediate primary_key(const sql::column& column) const;
|
||||
query_add_primary_key_constraint_intermediate primary_keys(const std::vector<sql::column>& columns) const;
|
||||
query_add_foreign_key_constraint_intermediate foreign_key(const sql::column& column) const;
|
||||
query_add_foreign_key_constraint_intermediate foreign_keys(const std::vector<sql::column>& columns) const;
|
||||
};
|
||||
|
||||
class query_drop_key_constraint_intermediate final : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
void constraint(const std::string& name);
|
||||
void primary_key();
|
||||
void foreign_key(const std::string& name);
|
||||
void foreign_keys(const std::vector<std::string>& names);
|
||||
};
|
||||
|
||||
class query_alter_table_intermediate final : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_add_key_constraint_intermediate add_constraint(const std::string& name);
|
||||
query_drop_key_constraint_intermediate drop_constraint(const std::string& name);
|
||||
};
|
||||
}
|
||||
|
||||
#endif //MATADOR_QUERY_ALTER_TABLE_INTERMEDIATE_HPP
|
||||
@@ -17,6 +17,84 @@
|
||||
|
||||
namespace matador::query::internal {
|
||||
|
||||
class query_alter_part final : public query_part {
|
||||
public:
|
||||
query_alter_part();
|
||||
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
};
|
||||
|
||||
class query_alter_table_part final : public query_part {
|
||||
public:
|
||||
explicit query_alter_table_part(sql::table table);
|
||||
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const sql::table& table() const;
|
||||
|
||||
private:
|
||||
sql::table table_;
|
||||
};
|
||||
|
||||
class query_add_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_add_key_constraint_part(const std::string& name);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
private:
|
||||
std::string name_;
|
||||
};
|
||||
|
||||
class query_drop_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_drop_key_constraint_part(const std::string& name);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
private:
|
||||
std::string name_;
|
||||
};
|
||||
|
||||
class query_add_foreign_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_add_foreign_key_constraint_part( const std::vector<sql::column>& columns);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const std::vector<sql::column>& columns() const;
|
||||
private:
|
||||
std::vector<sql::column> columns_;
|
||||
};
|
||||
|
||||
class query_add_foreign_key_reference_part final : public query_part {
|
||||
public:
|
||||
explicit query_add_foreign_key_reference_part(sql::table table, const std::vector<sql::column>& columns);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const sql::table& table() const;
|
||||
[[nodiscard]] const std::vector<sql::column>& columns() const;
|
||||
|
||||
private:
|
||||
sql::table table_;
|
||||
std::vector<sql::column> columns_;
|
||||
};
|
||||
|
||||
class query_add_primary_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_add_primary_key_constraint_part( const std::vector<sql::column>& columns);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const std::vector<sql::column>& columns() const;
|
||||
private:
|
||||
std::vector<sql::column> columns_;
|
||||
};
|
||||
|
||||
class query_drop_foreign_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_drop_foreign_key_constraint_part( const std::vector<sql::column>& columns);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents the SQL SELECT part
|
||||
*/
|
||||
|
||||
@@ -31,6 +31,8 @@ public:
|
||||
[[nodiscard]] static query_insert_intermediate insert();
|
||||
[[nodiscard]] static query_update_intermediate update(const sql::table &table);
|
||||
[[nodiscard]] static query_delete_intermediate remove();
|
||||
|
||||
[[nodiscard]] static query_alter_intermediate alter();
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -30,6 +30,14 @@ public:
|
||||
std::optional<std::reference_wrapper<const sql::connection_impl>> conn);
|
||||
|
||||
protected:
|
||||
void visit(internal::query_alter_part& part) override;
|
||||
void visit(internal::query_alter_table_part& part) override;
|
||||
void visit(internal::query_add_key_constraint_part& part) override;
|
||||
void visit( internal::query_add_foreign_key_constraint_part& part ) override;
|
||||
void visit( internal::query_add_primary_key_constraint_part& part ) override;
|
||||
void visit( internal::query_add_foreign_key_reference_part& part ) override;
|
||||
void visit(internal::query_drop_key_constraint_part& part) override;
|
||||
|
||||
void visit(internal::query_select_part &select_part) override;
|
||||
void visit(internal::query_from_part &from_part) override;
|
||||
void visit(internal::query_join_part &join_part) override;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "matador/query/intermediates/executable_query.hpp"
|
||||
#include "matador/query/intermediates/fetchable_query.hpp"
|
||||
#include "matador/query/intermediates/query_alter_intermediate.hpp"
|
||||
#include "matador/query/intermediates/query_create_intermediate.hpp"
|
||||
#include "matador/query/intermediates/query_delete_from_intermediate.hpp"
|
||||
#include "matador/query/intermediates/query_delete_intermediate.hpp"
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
namespace matador::query {
|
||||
|
||||
namespace internal {
|
||||
class query_alter_part;
|
||||
class query_alter_table_part;
|
||||
class query_add_key_constraint_part;
|
||||
class query_drop_key_constraint_part;
|
||||
class query_add_foreign_key_constraint_part;
|
||||
class query_add_foreign_key_reference_part;
|
||||
class query_add_primary_key_constraint_part;
|
||||
class query_select_part;
|
||||
class query_from_part;
|
||||
class query_join_part;
|
||||
@@ -28,11 +35,18 @@ class query_drop_part;
|
||||
class query_drop_table_part;
|
||||
}
|
||||
|
||||
class query_part_visitor
|
||||
{
|
||||
class query_part_visitor {
|
||||
public:
|
||||
virtual ~query_part_visitor() = default;
|
||||
|
||||
virtual void visit(internal::query_alter_part &part) = 0;
|
||||
virtual void visit(internal::query_alter_table_part &part) = 0;
|
||||
virtual void visit(internal::query_add_key_constraint_part &part) = 0;
|
||||
virtual void visit(internal::query_add_foreign_key_constraint_part &part) = 0;
|
||||
virtual void visit(internal::query_add_primary_key_constraint_part &part) = 0;
|
||||
virtual void visit(internal::query_add_foreign_key_reference_part &part) = 0;
|
||||
virtual void visit(internal::query_drop_key_constraint_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_select_part &select_part) = 0;
|
||||
virtual void visit(internal::query_from_part &from_part) = 0;
|
||||
virtual void visit(internal::query_join_part &join_part) = 0;
|
||||
|
||||
Reference in New Issue
Block a user