constraint progress
This commit is contained in:
@@ -11,9 +11,11 @@ namespace matador::query {
|
||||
class constraint {
|
||||
public:
|
||||
constraint() = default;
|
||||
constraint(std::string column_name, utils::constraints type, std::string referenced_table, std::string referenced_column);
|
||||
constraint(std::string column_name, std::string table_name, utils::constraints type);
|
||||
constraint(std::string column_name, std::string table_name, utils::constraints type, std::string referenced_table, std::string referenced_column);
|
||||
|
||||
[[nodiscard]] std::string column_name() const;
|
||||
[[nodiscard]] std::string table_name() const;
|
||||
[[nodiscard]] const utils::constraints& type() const;
|
||||
[[nodiscard]] bool is_primary_key_constraint() const;
|
||||
[[nodiscard]] bool is_foreign_key_constraint() const;
|
||||
@@ -23,6 +25,7 @@ public:
|
||||
|
||||
private:
|
||||
std::string column_name_;
|
||||
std::string table_name_;
|
||||
utils::constraints type_{};
|
||||
std::string referenced_table_;
|
||||
std::string referenced_column_;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#ifndef MATADOR_QUERY_ALTER_TABLE_INTERMEDIATE_HPP
|
||||
#define MATADOR_QUERY_ALTER_TABLE_INTERMEDIATE_HPP
|
||||
|
||||
#include "executable_query.hpp"
|
||||
#include "matador/object/restriction.hpp"
|
||||
#include "matador/query/intermediates/executable_query.hpp"
|
||||
#include "matador/query/intermediates/query_intermediate.hpp"
|
||||
#include "matador/query/constraint.hpp"
|
||||
|
||||
#include "matador/object/restriction.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
class query_add_primary_key_constraint_intermediate final : public executable_query {
|
||||
@@ -35,7 +37,9 @@ class query_alter_table_intermediate final : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
executable_query add_constraint(const object::restriction& rest);
|
||||
query_add_key_constraint_intermediate add_constraint(const std::string& name);
|
||||
executable_query drop_constraint(const object::restriction& rest);
|
||||
executable_query drop_constraint(const std::string& name);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include <list>
|
||||
#include <memory>
|
||||
|
||||
#include "matador/object/restriction.hpp"
|
||||
|
||||
namespace matador::query::internal {
|
||||
|
||||
class query_alter_part final : public query_part {
|
||||
@@ -46,9 +48,19 @@ private:
|
||||
std::string name_;
|
||||
};
|
||||
|
||||
class query_drop_key_constraint_part final : public query_part {
|
||||
class query_add_constraint_part_by_constraint final : public query_part {
|
||||
public:
|
||||
explicit query_drop_key_constraint_part(std::string name);
|
||||
explicit query_add_constraint_part_by_constraint(const constraint& co);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const class constraint& constraint() const;
|
||||
private:
|
||||
class constraint constraint_;
|
||||
};
|
||||
|
||||
class query_drop_key_constraint_part_by_name final : public query_part {
|
||||
public:
|
||||
explicit query_drop_key_constraint_part_by_name(std::string name);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
@@ -56,6 +68,16 @@ private:
|
||||
std::string name_;
|
||||
};
|
||||
|
||||
class query_drop_key_constraint_part_by_constraint final : public query_part {
|
||||
public:
|
||||
explicit query_drop_key_constraint_part_by_constraint(const constraint& co);
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
[[nodiscard]] const class constraint& constraint() const;
|
||||
private:
|
||||
class constraint constraint_;
|
||||
};
|
||||
|
||||
class query_add_foreign_key_constraint_part final : public query_part {
|
||||
public:
|
||||
explicit query_add_foreign_key_constraint_part( const std::vector<column>& columns);
|
||||
@@ -89,12 +111,6 @@ private:
|
||||
std::vector<column> columns_;
|
||||
};
|
||||
|
||||
class query_drop_foreign_key_constraint_part final : public query_part {
|
||||
public:
|
||||
query_drop_foreign_key_constraint_part();
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents the SQL SELECT part
|
||||
*/
|
||||
|
||||
@@ -38,8 +38,9 @@ protected:
|
||||
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_drop_foreign_key_constraint_part& part) override;
|
||||
void visit(internal::query_add_constraint_part_by_constraint &part) override;
|
||||
void visit(internal::query_drop_key_constraint_part_by_name &part) override;
|
||||
void visit(internal::query_drop_key_constraint_part_by_constraint &part) override;
|
||||
|
||||
protected:
|
||||
void visit(internal::query_select_part &part) override;
|
||||
@@ -76,6 +77,10 @@ protected:
|
||||
static std::string build_table_name(sql::dialect_token token, const sql::dialect &d, const table& t);
|
||||
static std::string determine_value(value_visitor &visitor, const std::variant<utils::placeholder, utils::database_type> &val);
|
||||
|
||||
std::string build_add_constraint_string(const class constraint& c);
|
||||
std::string build_drop_constraint_string(const class constraint& c);
|
||||
std::string build_constraint_name(const class constraint& c);
|
||||
|
||||
protected:
|
||||
const query_data *data_{};
|
||||
sql::query_context query_;
|
||||
|
||||
@@ -7,9 +7,10 @@ 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_drop_foreign_key_constraint_part;
|
||||
class query_drop_key_constraint_part_by_name;
|
||||
class query_drop_key_constraint_part_by_constraint;
|
||||
class query_add_foreign_key_constraint_part;
|
||||
class query_add_constraint_part_by_constraint;
|
||||
class query_add_foreign_key_reference_part;
|
||||
class query_add_primary_key_constraint_part;
|
||||
class query_select_part;
|
||||
@@ -48,10 +49,11 @@ public:
|
||||
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_constraint_part_by_constraint &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_drop_foreign_key_constraint_part &part) = 0;
|
||||
virtual void visit(internal::query_drop_key_constraint_part_by_name &part) = 0;
|
||||
virtual void visit(internal::query_drop_key_constraint_part_by_constraint &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_select_part &part) = 0;
|
||||
virtual void visit(internal::query_from_part &part) = 0;
|
||||
|
||||
@@ -171,6 +171,7 @@ public:
|
||||
[[nodiscard]] const std::string& start_quote() const;
|
||||
[[nodiscard]] const std::string& string_quote() const;
|
||||
[[nodiscard]] const std::string& table() const;
|
||||
[[nodiscard]] const std::string& unique() const;
|
||||
[[nodiscard]] const std::string& update() const;
|
||||
[[nodiscard]] const std::string& values() const;
|
||||
[[nodiscard]] const std::string& where() const;
|
||||
@@ -237,6 +238,7 @@ private:
|
||||
{dialect_token::StartQuote, "\""},
|
||||
{dialect_token::StringQuote, "'"},
|
||||
{dialect_token::Table, "TABLE"},
|
||||
{dialect_token::Unique, "UNIQUE"},
|
||||
{dialect_token::Update, "UPDATE"},
|
||||
{dialect_token::Values, "VALUES"},
|
||||
{dialect_token::Where, "WHERE"}
|
||||
|
||||
@@ -55,6 +55,7 @@ enum class dialect_token : uint8_t {
|
||||
StartQuote,
|
||||
StringQuote,
|
||||
Table,
|
||||
Unique,
|
||||
Update,
|
||||
Values,
|
||||
Where
|
||||
|
||||
Reference in New Issue
Block a user