added sequence-specific code (create, drop and nextval)
This commit is contained in:
@@ -48,6 +48,11 @@ public:
|
||||
[[nodiscard]] const utils::identifier &primary_key() const { return proxy_->primary_key(); }
|
||||
void primary_key(const utils::identifier &pk) { proxy_->primary_key(pk); }
|
||||
|
||||
[[nodiscard]] bool is_persistent() const { return proxy_->is_persistent(); }
|
||||
[[nodiscard]] bool is_transient() const { return !proxy_->is_transient(); }
|
||||
[[nodiscard]] bool is_detached() const { return !proxy_->is_detached(); }
|
||||
[[nodiscard]] bool is_removed() const { return !proxy_->is_removed(); }
|
||||
|
||||
private:
|
||||
std::shared_ptr<object_proxy<Type> > proxy_{};
|
||||
};
|
||||
|
||||
@@ -11,7 +11,8 @@ public:
|
||||
query_drop_intermediate();
|
||||
|
||||
executable_query table(const table &tab);
|
||||
// executable_query schema(const std::string &schema_name);
|
||||
executable_query sequence(const std::string &sequence_name);
|
||||
executable_query schema(const std::string &schema_name);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ class query_select_intermediate : public query_intermediate
|
||||
public:
|
||||
explicit query_select_intermediate(const std::vector<table_column>& columns);
|
||||
|
||||
fetchable_query nextval(const std::string& sequence_name);
|
||||
|
||||
template<typename... Tables>
|
||||
query_from_intermediate from(const Tables&... tables) {
|
||||
std::vector<table> v { tables... };
|
||||
|
||||
@@ -126,6 +126,20 @@ private:
|
||||
std::vector<table_column> columns_;
|
||||
};
|
||||
|
||||
class query_select_nextval_part final : public query_part {
|
||||
public:
|
||||
explicit query_select_nextval_part(std::string sequence_name);
|
||||
|
||||
[[nodiscard]] const std::string& sequence_name() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string sequence_name_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Represents the SQL FROM part
|
||||
*/
|
||||
@@ -443,6 +457,19 @@ private:
|
||||
std::list<table_constraint> constraints_;
|
||||
};
|
||||
|
||||
class query_create_sequence_part final : public query_part {
|
||||
public:
|
||||
explicit query_create_sequence_part(std::string sequence_name);
|
||||
|
||||
[[nodiscard]] const std::string& sequence_name() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string sequence_name_;
|
||||
};
|
||||
|
||||
class query_create_schema_part final : public query_part {
|
||||
public:
|
||||
explicit query_create_schema_part(std::string schema);
|
||||
@@ -479,6 +506,19 @@ private:
|
||||
class table table_;
|
||||
};
|
||||
|
||||
class query_drop_sequence_part final : public query_part {
|
||||
public:
|
||||
explicit query_drop_sequence_part(std::string sequence_name);
|
||||
|
||||
[[nodiscard]] const std::string& sequence_name() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string sequence_name_;
|
||||
};
|
||||
|
||||
class query_drop_schema_part final : public query_part {
|
||||
public:
|
||||
explicit query_drop_schema_part(std::string schema_);
|
||||
|
||||
@@ -45,6 +45,7 @@ protected:
|
||||
void visit(internal::query_drop_key_constraint_part_by_constraint &part) override;
|
||||
|
||||
void visit(internal::query_select_part &part) override;
|
||||
void visit(internal::query_select_nextval_part &part) override;
|
||||
void visit(internal::query_from_part &part) override;
|
||||
void visit(internal::query_join_table_part &part) override;
|
||||
void visit(internal::query_join_query_part &part) override;
|
||||
@@ -72,10 +73,12 @@ protected:
|
||||
void visit(internal::query_create_table_part &part) override;
|
||||
void visit(internal::query_create_table_columns_part& part) override;
|
||||
void visit(internal::query_create_table_constraints_part& part) override;
|
||||
void visit(internal::query_create_sequence_part &part) override;
|
||||
void visit(internal::query_create_schema_part& part) override;
|
||||
|
||||
void visit(internal::query_drop_part &part) override;
|
||||
void visit(internal::query_drop_table_part &part) override;
|
||||
void visit(internal::query_drop_sequence_part &part) override;
|
||||
void visit(internal::query_drop_schema_part& part) override;
|
||||
|
||||
static std::string build_table_name(sql::dialect_token token, const sql::dialect &d, const table& t);
|
||||
|
||||
@@ -17,6 +17,7 @@ class query_add_foreign_key_reference_part;
|
||||
class query_add_primary_key_constraint_part;
|
||||
// Select
|
||||
class query_select_part;
|
||||
class query_select_nextval_part;
|
||||
class query_from_part;
|
||||
class query_join_table_part;
|
||||
class query_join_query_part;
|
||||
@@ -45,12 +46,16 @@ class query_create_part;
|
||||
class query_create_table_part;
|
||||
class query_create_table_columns_part;
|
||||
class query_create_table_constraints_part;
|
||||
// Create Sequence
|
||||
class query_create_sequence_part;
|
||||
// Create schema
|
||||
class query_create_schema_part;
|
||||
// Drop common
|
||||
class query_drop_part;
|
||||
// Drop table
|
||||
class query_drop_table_part;
|
||||
// Drop sequence
|
||||
class query_drop_sequence_part;
|
||||
// Drop schema
|
||||
class query_drop_schema_part;
|
||||
}
|
||||
@@ -70,6 +75,7 @@ public:
|
||||
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_select_nextval_part &part) = 0;
|
||||
virtual void visit(internal::query_from_part &part) = 0;
|
||||
virtual void visit(internal::query_join_table_part &part) = 0;
|
||||
virtual void visit(internal::query_join_query_part &part) = 0;
|
||||
@@ -97,10 +103,12 @@ public:
|
||||
virtual void visit(internal::query_create_table_part &part) = 0;
|
||||
virtual void visit(internal::query_create_table_columns_part &part) = 0;
|
||||
virtual void visit(internal::query_create_table_constraints_part &part) = 0;
|
||||
virtual void visit(internal::query_create_sequence_part &part) = 0;
|
||||
virtual void visit(internal::query_create_schema_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_drop_part &part) = 0;
|
||||
virtual void visit(internal::query_drop_table_part &part) = 0;
|
||||
virtual void visit(internal::query_drop_sequence_part &part) = 0;
|
||||
virtual void visit(internal::query_drop_schema_part &part) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -145,6 +145,7 @@ public:
|
||||
[[nodiscard]] const std::string& end_binary_data() const;
|
||||
[[nodiscard]] const std::string& end_quote() const;
|
||||
[[nodiscard]] const std::string& end_string_data() const;
|
||||
[[nodiscard]] const std::string& exists() const;
|
||||
[[nodiscard]] const std::string& foreign_key() const;
|
||||
[[nodiscard]] const std::string& from() const;
|
||||
[[nodiscard]] const std::string& group_by() const;
|
||||
@@ -157,6 +158,7 @@ public:
|
||||
[[nodiscard]] const std::string& join() const;
|
||||
[[nodiscard]] const std::string& like() const;
|
||||
[[nodiscard]] const std::string& limit() const;
|
||||
[[nodiscard]] const std::string& nextval() const;
|
||||
[[nodiscard]] const std::string& not_() const;
|
||||
[[nodiscard]] const std::string& not_null() const;
|
||||
[[nodiscard]] const std::string& offset() const;
|
||||
@@ -171,6 +173,7 @@ public:
|
||||
[[nodiscard]] const std::string& schema() const;
|
||||
[[nodiscard]] const std::string& select() const;
|
||||
[[nodiscard]] const std::string& set() const;
|
||||
[[nodiscard]] const std::string& sequence() const;
|
||||
[[nodiscard]] const std::string& start_quote() const;
|
||||
[[nodiscard]] const std::string& string_quote() const;
|
||||
[[nodiscard]] const std::string& table() const;
|
||||
@@ -192,6 +195,7 @@ private:
|
||||
|
||||
std::string default_schema_name_;
|
||||
|
||||
|
||||
token_to_string_map tokens_ {
|
||||
{dialect_token::AddConstraint, "ADD CONSTRAINT"},
|
||||
{dialect_token::Alter, "ALTER"},
|
||||
@@ -215,6 +219,7 @@ private:
|
||||
{dialect_token::EndBinaryData, "'"},
|
||||
{dialect_token::EndQuote, "\""},
|
||||
{dialect_token::EndStringData, "'"},
|
||||
{dialect_token::Exists, "EXISTS"},
|
||||
{dialect_token::ForeignKey, "FOREIGN KEY"},
|
||||
{dialect_token::From, "FROM"},
|
||||
{dialect_token::GroupBy, "GROUP BY"},
|
||||
@@ -227,6 +232,7 @@ private:
|
||||
{dialect_token::Join, "LEFT JOIN"},
|
||||
{dialect_token::Like, "LIKE"},
|
||||
{dialect_token::Limit, "LIMIT"},
|
||||
{dialect_token::NextVal, "NEXTVAL"},
|
||||
{dialect_token::None, ""},
|
||||
{dialect_token::Not, "NOT"},
|
||||
{dialect_token::NotNull, "NOT NULL"},
|
||||
@@ -242,6 +248,7 @@ private:
|
||||
{dialect_token::Schema, "SCHEMA"},
|
||||
{dialect_token::Select, "SELECT"},
|
||||
{dialect_token::Set, "SET"},
|
||||
{dialect_token::Sequence, "SEQUENCE"},
|
||||
{dialect_token::StartQuote, "\""},
|
||||
{dialect_token::StringQuote, "'"},
|
||||
{dialect_token::Table, "TABLE"},
|
||||
@@ -250,7 +257,6 @@ private:
|
||||
{dialect_token::Values, "VALUES"},
|
||||
{dialect_token::Where, "WHERE"}
|
||||
};
|
||||
|
||||
data_type_to_string_map data_types_ {
|
||||
{utils::basic_type::Int8, "TINYINT"},
|
||||
{utils::basic_type::Int16, "SMALLINT"},
|
||||
|
||||
@@ -29,6 +29,7 @@ enum class dialect_token : uint8_t {
|
||||
EndBinaryData,
|
||||
EndQuote,
|
||||
EndStringData,
|
||||
Exists,
|
||||
ForeignKey,
|
||||
From,
|
||||
GroupBy,
|
||||
@@ -41,6 +42,7 @@ enum class dialect_token : uint8_t {
|
||||
Join,
|
||||
Like,
|
||||
Limit,
|
||||
NextVal,
|
||||
None,
|
||||
Not,
|
||||
NotNull,
|
||||
@@ -56,6 +58,7 @@ enum class dialect_token : uint8_t {
|
||||
Schema,
|
||||
Select,
|
||||
Set,
|
||||
Sequence,
|
||||
StartQuote,
|
||||
StringQuote,
|
||||
Table,
|
||||
|
||||
@@ -13,6 +13,7 @@ enum class sql_command {
|
||||
Create,
|
||||
CreateTable,
|
||||
CreateSchema,
|
||||
CreateSequence,
|
||||
CreateDatabase,
|
||||
Update,
|
||||
Insert,
|
||||
@@ -21,6 +22,7 @@ enum class sql_command {
|
||||
Drop,
|
||||
DropTable,
|
||||
DropSchema,
|
||||
DropSequence,
|
||||
DropDatabase,
|
||||
Alter,
|
||||
AlterTable,
|
||||
|
||||
Reference in New Issue
Block a user