added alter table command to fluent query builder
This commit is contained in:
@@ -77,7 +77,7 @@ public:
|
||||
[[nodiscard]] utils::result<sql::statement, utils::error> prepare(sql::executor &exec) const;
|
||||
|
||||
[[nodiscard]] std::string str(const sql::executor &exec) const;
|
||||
[[nodiscard]] sql::query_context compile(const sql::dialect &d, query_mode mode) const;
|
||||
[[nodiscard]] sql::query_context compile(const sql::dialect &d) const;
|
||||
|
||||
private:
|
||||
[[nodiscard]] utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::executor &exec) const;
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class query_create_intermediate : public query_intermediate
|
||||
{
|
||||
class query_create_intermediate : public query_intermediate {
|
||||
public:
|
||||
query_create_intermediate();
|
||||
|
||||
@@ -20,6 +19,7 @@ public:
|
||||
executable_query table(const sql::table &table, const object::repository &schema) {
|
||||
return this->table(table, object::attribute_definition_generator::generate<Type>(schema));
|
||||
}
|
||||
executable_query schema(const std::string &schema_name);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class query_drop_intermediate : query_intermediate
|
||||
{
|
||||
class query_drop_intermediate : query_intermediate {
|
||||
public:
|
||||
query_drop_intermediate();
|
||||
|
||||
executable_query table(const sql::table &table);
|
||||
executable_query schema(const std::string &schema_name);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "matador/sql/column.hpp"
|
||||
|
||||
#include "matador/utils/placeholder.hpp"
|
||||
#include "matador/utils/types.hpp"
|
||||
|
||||
namespace matador::query::internal {
|
||||
@@ -12,13 +13,14 @@ public:
|
||||
key_value_pair(const sql::column &col, utils::database_type value);
|
||||
key_value_pair(std::string name, utils::database_type value);
|
||||
key_value_pair(const char *name, utils::database_type value);
|
||||
key_value_pair(const char *name, utils::placeholder p);
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
[[nodiscard]] const utils::database_type& value() const;
|
||||
[[nodiscard]] const std::variant<utils::placeholder, utils::database_type>& value() const;
|
||||
|
||||
private:
|
||||
std::string name_;
|
||||
utils::database_type value_;
|
||||
std::variant<utils::placeholder, utils::database_type> value_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ private:
|
||||
|
||||
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);
|
||||
query_drop_foreign_key_constraint_part();
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
};
|
||||
|
||||
@@ -377,6 +377,19 @@ private:
|
||||
std::vector<object::attribute_definition> columns_;
|
||||
};
|
||||
|
||||
class query_create_schema_part final : public query_part {
|
||||
public:
|
||||
explicit query_create_schema_part(std::string schema);
|
||||
|
||||
[[nodiscard]] const std::string& schema() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string schema_;
|
||||
};
|
||||
|
||||
class query_drop_part final : public query_part
|
||||
{
|
||||
public:
|
||||
@@ -400,5 +413,18 @@ private:
|
||||
sql::table table_;
|
||||
};
|
||||
|
||||
class query_drop_schema_part final : public query_part {
|
||||
public:
|
||||
explicit query_drop_schema_part(std::string schema_);
|
||||
|
||||
[[nodiscard]] const std::string& schema() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string schema_;
|
||||
};
|
||||
|
||||
}
|
||||
#endif //QUERY_QUERY_PARTS_HPP
|
||||
|
||||
@@ -20,6 +20,7 @@ class query
|
||||
public:
|
||||
[[nodiscard]] static query_create_intermediate create();
|
||||
[[nodiscard]] static query_drop_intermediate drop();
|
||||
[[nodiscard]] static query_select_intermediate select();
|
||||
[[nodiscard]] static query_select_intermediate select(std::initializer_list<sql::column> columns);
|
||||
[[nodiscard]] static query_select_intermediate select(const std::vector<sql::column>& columns);
|
||||
[[nodiscard]] static query_select_intermediate select(const std::vector<std::string> &column_names);
|
||||
|
||||
@@ -22,8 +22,7 @@ struct basic_type_to_string_visitor;
|
||||
struct query_data;
|
||||
struct value_visitor;
|
||||
|
||||
class query_compiler final : public query_part_visitor
|
||||
{
|
||||
class query_compiler final : public query_part_visitor {
|
||||
public:
|
||||
sql::query_context compile(const query_data &data,
|
||||
const sql::dialect &d,
|
||||
@@ -33,42 +32,45 @@ 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_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_select_part &select_part) override;
|
||||
void visit(internal::query_from_part &from_part) override;
|
||||
void visit(internal::query_join_part &join_part) override;
|
||||
void visit(internal::query_on_part &on_part) override;
|
||||
void visit(internal::query_where_part &where_part) override;
|
||||
void visit(internal::query_group_by_part &group_by_part) override;
|
||||
void visit(internal::query_order_by_part &order_by_part) override;
|
||||
void visit(internal::query_order_by_asc_part &order_by_asc_part) override;
|
||||
void visit(internal::query_order_by_desc_part &order_by_desc_part) override;
|
||||
void visit(internal::query_offset_part &offset_part) override;
|
||||
void visit(internal::query_limit_part &limit_part) override;
|
||||
void visit(internal::query_insert_part &insert_part) override;
|
||||
void visit(internal::query_into_part &into_part) override;
|
||||
void visit(internal::query_values_part &values_part) override;
|
||||
protected:
|
||||
void visit(internal::query_select_part &part) override;
|
||||
void visit(internal::query_from_part &part) override;
|
||||
void visit(internal::query_join_part &part) override;
|
||||
void visit(internal::query_on_part &part) override;
|
||||
void visit(internal::query_where_part &part) override;
|
||||
void visit(internal::query_group_by_part &part) override;
|
||||
void visit(internal::query_order_by_part &part) override;
|
||||
void visit(internal::query_order_by_asc_part &part) override;
|
||||
void visit(internal::query_order_by_desc_part &part) override;
|
||||
void visit(internal::query_offset_part &part) override;
|
||||
void visit(internal::query_limit_part &part) override;
|
||||
void visit(internal::query_insert_part &part) override;
|
||||
void visit(internal::query_into_part &part) override;
|
||||
void visit(internal::query_values_part &part) override;
|
||||
|
||||
void visit(internal::query_update_part &update_part) override;
|
||||
void visit(internal::query_set_part &set_part) override;
|
||||
void visit(internal::query_update_part &part) override;
|
||||
void visit(internal::query_set_part &part) override;
|
||||
|
||||
void visit(internal::query_delete_part &delete_part) override;
|
||||
void visit(internal::query_delete_from_part &delete_from_part) override;
|
||||
void visit(internal::query_delete_part &part) override;
|
||||
void visit(internal::query_delete_from_part &part) override;
|
||||
|
||||
void visit(internal::query_create_part &create_part) override;
|
||||
void visit(internal::query_create_table_part &create_table_part) override;
|
||||
void visit(internal::query_create_part &part) override;
|
||||
void visit(internal::query_create_table_part &part) override;
|
||||
void visit(internal::query_create_schema_part& part) override;
|
||||
|
||||
void visit(internal::query_drop_part &drop_part) override;
|
||||
void visit(internal::query_drop_table_part &drop_table_part) override;
|
||||
void visit(internal::query_drop_part &part) override;
|
||||
void visit(internal::query_drop_table_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 sql::table& t);
|
||||
|
||||
std::string determine_value(value_visitor &visitor, const std::variant<utils::placeholder, utils::database_type> &val);
|
||||
std::string determine_set_value(internal::basic_type_to_string_visitor &visitor, const utils::database_type &val);
|
||||
static std::string determine_value(value_visitor &visitor, const std::variant<utils::placeholder, utils::database_type> &val);
|
||||
|
||||
protected:
|
||||
const query_data *data_{};
|
||||
|
||||
@@ -12,16 +12,10 @@
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
enum struct query_mode {
|
||||
Direct = 0,
|
||||
Prepared = 1
|
||||
};
|
||||
|
||||
struct query_data {
|
||||
std::vector<std::unique_ptr<query_part>> parts{};
|
||||
std::vector<object::attribute_definition> columns{};
|
||||
std::unordered_map<std::string, sql::table> tables{};
|
||||
query_mode mode = query_mode::Direct;
|
||||
std::vector<std::unique_ptr<query_part>> parts{};
|
||||
std::vector<object::attribute_definition> columns{};
|
||||
std::unordered_map<std::string, sql::table> tables{};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ 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_add_foreign_key_constraint_part;
|
||||
class query_add_foreign_key_reference_part;
|
||||
class query_add_primary_key_constraint_part;
|
||||
@@ -31,8 +32,10 @@ class query_delete_part;
|
||||
class query_delete_from_part;
|
||||
class query_create_part;
|
||||
class query_create_table_part;
|
||||
class query_create_schema_part;
|
||||
class query_drop_part;
|
||||
class query_drop_table_part;
|
||||
class query_drop_schema_part;
|
||||
}
|
||||
|
||||
class query_part_visitor {
|
||||
@@ -46,34 +49,37 @@ public:
|
||||
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_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;
|
||||
virtual void visit(internal::query_on_part &on_part) = 0;
|
||||
virtual void visit(internal::query_where_part &where_part) = 0;
|
||||
virtual void visit(internal::query_group_by_part &group_by_part) = 0;
|
||||
virtual void visit(internal::query_order_by_part &order_by_part) = 0;
|
||||
virtual void visit(internal::query_order_by_asc_part &order_by_asc_part) = 0;
|
||||
virtual void visit(internal::query_order_by_desc_part &order_by_desc_part) = 0;
|
||||
virtual void visit(internal::query_offset_part &offset_part) = 0;
|
||||
virtual void visit(internal::query_limit_part &limit_part) = 0;
|
||||
virtual void visit(internal::query_select_part &part) = 0;
|
||||
virtual void visit(internal::query_from_part &part) = 0;
|
||||
virtual void visit(internal::query_join_part &part) = 0;
|
||||
virtual void visit(internal::query_on_part &part) = 0;
|
||||
virtual void visit(internal::query_where_part &part) = 0;
|
||||
virtual void visit(internal::query_group_by_part &part) = 0;
|
||||
virtual void visit(internal::query_order_by_part &part) = 0;
|
||||
virtual void visit(internal::query_order_by_asc_part &part) = 0;
|
||||
virtual void visit(internal::query_order_by_desc_part &part) = 0;
|
||||
virtual void visit(internal::query_offset_part &part) = 0;
|
||||
virtual void visit(internal::query_limit_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_insert_part &insert_part) = 0;
|
||||
virtual void visit(internal::query_into_part &into_part) = 0;
|
||||
virtual void visit(internal::query_values_part &values_part) = 0;
|
||||
virtual void visit(internal::query_insert_part &part) = 0;
|
||||
virtual void visit(internal::query_into_part &part) = 0;
|
||||
virtual void visit(internal::query_values_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_update_part &update_part) = 0;
|
||||
virtual void visit(internal::query_set_part &set_part) = 0;
|
||||
virtual void visit(internal::query_update_part &part) = 0;
|
||||
virtual void visit(internal::query_set_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_delete_part &delete_part) = 0;
|
||||
virtual void visit(internal::query_delete_from_part &delete_from_part) = 0;
|
||||
virtual void visit(internal::query_delete_part &part) = 0;
|
||||
virtual void visit(internal::query_delete_from_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_create_part &create_part) = 0;
|
||||
virtual void visit(internal::query_create_table_part &create_table_part) = 0;
|
||||
virtual void visit(internal::query_create_part &part) = 0;
|
||||
virtual void visit(internal::query_create_table_part &part) = 0;
|
||||
virtual void visit(internal::query_create_schema_part &part) = 0;
|
||||
|
||||
virtual void visit(internal::query_drop_part &drop_part) = 0;
|
||||
virtual void visit(internal::query_drop_table_part &drop_table_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_schema_part &part) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -136,58 +136,57 @@ private:
|
||||
escape_identifier_t identifier_escape_type_ = escape_identifier_t::ESCAPE_BOTH_SAME;
|
||||
|
||||
std::string default_schema_name_;
|
||||
// std::unique_ptr<query_compiler> compiler_;
|
||||
|
||||
token_to_string_map tokens_ {
|
||||
{dialect_token::Create, "CREATE"},
|
||||
{dialect_token::Drop, "DROP"},
|
||||
{dialect_token::Remove, "DELETE"},
|
||||
{dialect_token::Insert, "INSERT"},
|
||||
{dialect_token::Alter, "ALTER"},
|
||||
{dialect_token::Table, "TABLE"},
|
||||
{dialect_token::Into, "INTO"},
|
||||
{dialect_token::Values, "VALUES"},
|
||||
{dialect_token::Update, "UPDATE"},
|
||||
{dialect_token::Select, "SELECT"},
|
||||
{dialect_token::Columns, "COLUMNS"},
|
||||
{dialect_token::Column, "COLUMN"},
|
||||
{dialect_token::From, "FROM"},
|
||||
{dialect_token::Join, "LEFT JOIN"},
|
||||
{dialect_token::On, "ON"},
|
||||
{dialect_token::Where, "WHERE"},
|
||||
{dialect_token::And, "AND"},
|
||||
{dialect_token::Or, "OR"},
|
||||
{dialect_token::Not, "NOT"},
|
||||
{dialect_token::Like, "LIKE"},
|
||||
{dialect_token::Between, "BETWEEN"},
|
||||
{dialect_token::In, "IN"},
|
||||
{dialect_token::OrderBy, "ORDER BY"},
|
||||
{dialect_token::GroupBy, "GROUP BY"},
|
||||
{dialect_token::Asc, "ASC"},
|
||||
{dialect_token::Desc, "DESC"},
|
||||
{dialect_token::Offset, "OFFSET"},
|
||||
{dialect_token::Limit, "LIMIT"},
|
||||
{dialect_token::As, "AS"},
|
||||
{dialect_token::Offset, "OFFSET"},
|
||||
{dialect_token::Distinct, "DISTINCT"},
|
||||
{dialect_token::Set, "SET"},
|
||||
{dialect_token::NotNull, "NOT NULL"},
|
||||
{dialect_token::PrimaryKey, "PRIMARY KEY"},
|
||||
{dialect_token::ForeignKey, "FOREIGN KEY"},
|
||||
{dialect_token::References, "REFERENCES"},
|
||||
{dialect_token::AddConstraint, "ADD CONSTRAINT"},
|
||||
{dialect_token::DropConstraint, "DROP CONSTRAINT"},
|
||||
{dialect_token::Alter, "ALTER"},
|
||||
{dialect_token::And, "AND"},
|
||||
{dialect_token::As, "AS"},
|
||||
{dialect_token::Asc, "ASC"},
|
||||
{dialect_token::Asterisk, "*"},
|
||||
{dialect_token::Begin, "BEGIN TRANSACTION"},
|
||||
{dialect_token::Commit, "COMMIT TRANSACTION"},
|
||||
{dialect_token::Rollback, "ROLLBACK TRANSACTION"},
|
||||
{dialect_token::StartQuote, "\""},
|
||||
{dialect_token::EndQuote, "\""},
|
||||
{dialect_token::StringQuote, "'"},
|
||||
{dialect_token::BeginBinaryData, "X'"},
|
||||
{dialect_token::EndBinaryData, "'"},
|
||||
{dialect_token::BeginStringData, "'"},
|
||||
{dialect_token::Between, "BETWEEN"},
|
||||
{dialect_token::Column, "COLUMN"},
|
||||
{dialect_token::Columns, "COLUMNS"},
|
||||
{dialect_token::Commit, "COMMIT TRANSACTION"},
|
||||
{dialect_token::Create, "CREATE"},
|
||||
{dialect_token::Desc, "DESC"},
|
||||
{dialect_token::Distinct, "DISTINCT"},
|
||||
{dialect_token::Drop, "DROP"},
|
||||
{dialect_token::DropConstraint, "DROP CONSTRAINT"},
|
||||
{dialect_token::EndBinaryData, "'"},
|
||||
{dialect_token::EndQuote, "\""},
|
||||
{dialect_token::EndStringData, "'"},
|
||||
{dialect_token::None, ""}
|
||||
{dialect_token::ForeignKey, "FOREIGN KEY"},
|
||||
{dialect_token::From, "FROM"},
|
||||
{dialect_token::GroupBy, "GROUP BY"},
|
||||
{dialect_token::In, "IN"},
|
||||
{dialect_token::Insert, "INSERT"},
|
||||
{dialect_token::Into, "INTO"},
|
||||
{dialect_token::Join, "LEFT JOIN"},
|
||||
{dialect_token::Like, "LIKE"},
|
||||
{dialect_token::Limit, "LIMIT"},
|
||||
{dialect_token::None, ""},
|
||||
{dialect_token::Not, "NOT"},
|
||||
{dialect_token::NotNull, "NOT NULL"},
|
||||
{dialect_token::Offset, "OFFSET"},
|
||||
{dialect_token::On, "ON"},
|
||||
{dialect_token::Or, "OR"},
|
||||
{dialect_token::OrderBy, "ORDER BY"},
|
||||
{dialect_token::PrimaryKey, "PRIMARY KEY"},
|
||||
{dialect_token::References, "REFERENCES"},
|
||||
{dialect_token::Remove, "DELETE"},
|
||||
{dialect_token::Rollback, "ROLLBACK TRANSACTION"},
|
||||
{dialect_token::Select, "SELECT"},
|
||||
{dialect_token::Set, "SET"},
|
||||
{dialect_token::StartQuote, "\""},
|
||||
{dialect_token::StringQuote, "'"},
|
||||
{dialect_token::Table, "TABLE"},
|
||||
{dialect_token::Update, "UPDATE"},
|
||||
{dialect_token::Values, "VALUES"},
|
||||
{dialect_token::Where, "WHERE"}
|
||||
};
|
||||
|
||||
data_type_to_string_map data_types_ {
|
||||
|
||||
@@ -6,59 +6,57 @@
|
||||
namespace matador::sql {
|
||||
|
||||
enum class dialect_token : uint8_t {
|
||||
Create = 0,
|
||||
Drop,
|
||||
Remove,
|
||||
Insert,
|
||||
Update,
|
||||
Select,
|
||||
AddConstraint = 0,
|
||||
Alter,
|
||||
ForeignKey,
|
||||
PrimaryKey,
|
||||
AddConstraint,
|
||||
DropConstraint,
|
||||
References,
|
||||
Schema,
|
||||
Database,
|
||||
Table,
|
||||
Values,
|
||||
InsertValues,
|
||||
Columns,
|
||||
Column,
|
||||
From,
|
||||
Join,
|
||||
On,
|
||||
Into,
|
||||
Where,
|
||||
WhereClause,
|
||||
And,
|
||||
Or,
|
||||
Not,
|
||||
Like,
|
||||
Between,
|
||||
In,
|
||||
OrderBy,
|
||||
GroupBy,
|
||||
Asc,
|
||||
Desc,
|
||||
Limit,
|
||||
As,
|
||||
Offset,
|
||||
Distinct,
|
||||
Set,
|
||||
UpdateValues,
|
||||
NotNull,
|
||||
Asc,
|
||||
Asterisk,
|
||||
Begin,
|
||||
Commit,
|
||||
Rollback,
|
||||
StartQuote,
|
||||
EndQuote,
|
||||
StringQuote,
|
||||
BeginBinaryData,
|
||||
EndBinaryData,
|
||||
BeginStringData,
|
||||
Between,
|
||||
Column,
|
||||
Columns,
|
||||
Commit,
|
||||
Create,
|
||||
Database,
|
||||
Desc,
|
||||
Distinct,
|
||||
Drop,
|
||||
DropConstraint,
|
||||
EndBinaryData,
|
||||
EndQuote,
|
||||
EndStringData,
|
||||
None
|
||||
ForeignKey,
|
||||
From,
|
||||
GroupBy,
|
||||
In,
|
||||
Insert,
|
||||
Into,
|
||||
Join,
|
||||
Like,
|
||||
Limit,
|
||||
None,
|
||||
Not,
|
||||
NotNull,
|
||||
Offset,
|
||||
On,
|
||||
Or,
|
||||
OrderBy,
|
||||
PrimaryKey,
|
||||
References,
|
||||
Remove,
|
||||
Rollback,
|
||||
Schema,
|
||||
Select,
|
||||
Set,
|
||||
StartQuote,
|
||||
StringQuote,
|
||||
Table,
|
||||
Update,
|
||||
Values,
|
||||
Where
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace matador::sql {
|
||||
|
||||
enum class sql_command {
|
||||
SQL_UNKNOWN,
|
||||
SQL_CREATE,
|
||||
SQL_CREATE_TABLE,
|
||||
SQL_CREATE_SCHEMA,
|
||||
SQL_CREATE_DATABASE,
|
||||
@@ -17,6 +18,7 @@ enum class sql_command {
|
||||
SQL_INSERT,
|
||||
SQL_DELETE,
|
||||
SQL_SELECT,
|
||||
SQL_DROP,
|
||||
SQL_DROP_TABLE,
|
||||
SQL_DROP_SCHEMA,
|
||||
SQL_DROP_DATABASE,
|
||||
|
||||
@@ -10,8 +10,7 @@ namespace matador::sql {
|
||||
|
||||
struct column;
|
||||
|
||||
class record
|
||||
{
|
||||
class record final {
|
||||
private:
|
||||
using field_ref = std::reference_wrapper<field>;
|
||||
using field_by_index = std::vector<field_ref>;
|
||||
@@ -45,13 +44,11 @@ public:
|
||||
[[nodiscard]] const field& at(const column &col) const;
|
||||
[[nodiscard]] const field& at(size_t index) const;
|
||||
template<class Type>
|
||||
std::optional<Type> at(const column &col) const
|
||||
{
|
||||
std::optional<Type> at(const column &col) const {
|
||||
return at(col).as<Type>();
|
||||
}
|
||||
template<class Type>
|
||||
std::optional<Type> at(size_t index) const
|
||||
{
|
||||
std::optional<Type> at(const size_t index) const {
|
||||
return at(index).as<Type>();
|
||||
}
|
||||
|
||||
@@ -70,8 +67,6 @@ public:
|
||||
[[nodiscard]] bool empty() const;
|
||||
void clear();
|
||||
|
||||
// [[nodiscard]] bool unknown() const;
|
||||
|
||||
private:
|
||||
void init();
|
||||
void add_to_map(field &col, size_t index);
|
||||
@@ -79,8 +74,6 @@ private:
|
||||
private:
|
||||
field_by_index fields_;
|
||||
field_by_name_map fields_by_name_;
|
||||
|
||||
// int pk_index_{-1};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
return bus_.subscribe<EventType>(handler);
|
||||
}
|
||||
|
||||
connection_pool& pool() const;
|
||||
[[nodiscard]] connection_pool& pool() const;
|
||||
|
||||
private:
|
||||
size_t max_size_{};
|
||||
|
||||
Reference in New Issue
Block a user