column, placeholder and column_value generator progress
This commit is contained in:
@@ -44,7 +44,7 @@ add_library(matador-orm STATIC
|
||||
../../include/matador/query/intermediates/query_update_intermediate.hpp
|
||||
../../include/matador/query/intermediates/query_where_intermediate.hpp
|
||||
../../include/matador/query/internal/basic_type_to_string_visitor.hpp
|
||||
../../include/matador/query/internal/key_value_pair.hpp
|
||||
../../include/matador/query/internal/column_value_pair.hpp
|
||||
../../include/matador/query/internal/query_parts.hpp
|
||||
../../include/matador/query/join_data.hpp
|
||||
../../include/matador/query/key_value_generator.hpp
|
||||
@@ -123,7 +123,7 @@ add_library(matador-orm STATIC
|
||||
query/intermediates/query_update_intermediate.cpp
|
||||
query/intermediates/query_where_intermediate.cpp
|
||||
query/internal/basic_type_to_string_visitor.cpp
|
||||
query/internal/key_value_pair.cpp
|
||||
query/internal/column_value_pair.cpp
|
||||
query/internal/query_parts.cpp
|
||||
query/internal/query_result_impl.cpp
|
||||
query/key_value_generator.cpp
|
||||
@@ -154,6 +154,8 @@ add_library(matador-orm STATIC
|
||||
sql/statement.cpp
|
||||
sql/statement_cache.cpp
|
||||
sql/table.cpp
|
||||
../../include/matador/query/generator.hpp
|
||||
query/generator.cpp
|
||||
)
|
||||
|
||||
target_include_directories(matador-orm
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#include "matador/query/generator.hpp"
|
||||
|
||||
namespace matador::query::generator {
|
||||
void placeholder_generator::on_revision(const char* /*id*/, uint64_t&) {
|
||||
result_.emplace_back(utils::_);
|
||||
}
|
||||
|
||||
void column_value_generator::on_revision(const char* id, uint64_t& x) {
|
||||
result_.emplace_back(id, x);
|
||||
}
|
||||
}
|
||||
@@ -9,12 +9,12 @@ query_update_intermediate::query_update_intermediate(const sql::table& table)
|
||||
context_->parts.push_back(std::make_unique<internal::query_update_part>(table));
|
||||
}
|
||||
|
||||
query_set_intermediate query_update_intermediate::set(const std::initializer_list<internal::key_value_pair> columns)
|
||||
query_set_intermediate query_update_intermediate::set(const std::initializer_list<internal::column_value_pair> columns)
|
||||
{
|
||||
return set(std::vector<internal::key_value_pair>{columns});
|
||||
return set(std::vector<internal::column_value_pair>{columns});
|
||||
}
|
||||
|
||||
query_set_intermediate query_update_intermediate::set(std::vector<internal::key_value_pair> &&columns)
|
||||
query_set_intermediate query_update_intermediate::set(std::vector<internal::column_value_pair> &&columns)
|
||||
{
|
||||
context_->parts.push_back(std::make_unique<internal::query_set_part>(std::move(columns)));
|
||||
return {context_};
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#include "matador/query/internal/column_value_pair.hpp"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace matador::query::internal {
|
||||
|
||||
column_value_pair::column_value_pair(std::string name, utils::database_type value)
|
||||
: name_(std::move(name))
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
column_value_pair::column_value_pair(const sql::column &col, utils::database_type value)
|
||||
: name_(col.name)
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
column_value_pair::column_value_pair(const char *name, utils::database_type value)
|
||||
: name_(name)
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
column_value_pair::column_value_pair( const char* name, utils::placeholder p )
|
||||
: name_(name)
|
||||
, value_(p) {}
|
||||
|
||||
const std::string &column_value_pair::name() const {
|
||||
return name_;
|
||||
}
|
||||
|
||||
const std::variant<utils::placeholder, utils::database_type>& column_value_pair::value() const {
|
||||
return value_;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
#include "matador/query/internal/key_value_pair.hpp"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace matador::query::internal {
|
||||
|
||||
key_value_pair::key_value_pair(std::string name, utils::database_type value)
|
||||
: name_(std::move(name))
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
key_value_pair::key_value_pair(const sql::column &col, utils::database_type value)
|
||||
: name_(col.name)
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
key_value_pair::key_value_pair(const char *name, utils::database_type value)
|
||||
: name_(name)
|
||||
, value_(std::move(value)) {
|
||||
}
|
||||
|
||||
key_value_pair::key_value_pair( const char* name, utils::placeholder p )
|
||||
: name_(name)
|
||||
, value_(p) {}
|
||||
|
||||
const std::string &key_value_pair::name() const {
|
||||
return name_;
|
||||
}
|
||||
|
||||
const std::variant<utils::placeholder, utils::database_type>& key_value_pair::value() const {
|
||||
return value_;
|
||||
}
|
||||
}
|
||||
@@ -300,11 +300,11 @@ void query_update_part::accept(query_part_visitor &visitor)
|
||||
visitor.visit(*this);
|
||||
}
|
||||
|
||||
query_set_part::query_set_part(const std::vector<key_value_pair>& key_value_pairs)
|
||||
query_set_part::query_set_part(const std::vector<column_value_pair>& key_value_pairs)
|
||||
: query_part(sql::dialect_token::Set)
|
||||
, key_value_pairs_(key_value_pairs) {}
|
||||
|
||||
const std::vector<key_value_pair> &query_set_part::key_values() const
|
||||
const std::vector<column_value_pair> &query_set_part::key_values() const
|
||||
{
|
||||
return key_value_pairs_;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "matador/query/value_extractor.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
key_value_generator::key_value_generator(std::vector<internal::key_value_pair> &result)
|
||||
key_value_generator::key_value_generator(std::vector<internal::column_value_pair> &result)
|
||||
: result_(result) {}
|
||||
|
||||
void key_value_generator::on_revision(const char *id, uint64_t &x) {
|
||||
|
||||
@@ -7,12 +7,10 @@ namespace matador::sql {
|
||||
column_generator::column_generator(std::vector<column> &column_infos,
|
||||
const object::repository &scm,
|
||||
const std::string &table_name,
|
||||
const bool force_lazy,
|
||||
const bool has_many_to_many)
|
||||
const bool force_lazy)
|
||||
: column_infos_(column_infos)
|
||||
, table_schema_(scm)
|
||||
, force_lazy_(force_lazy)
|
||||
, has_many_to_many_(has_many_to_many)
|
||||
{
|
||||
table_name_stack_.push(table_name);
|
||||
seen_tables.insert(table_name);
|
||||
@@ -33,9 +31,6 @@ std::vector<column> column_generator::generate( const object::repository& scm, c
|
||||
|
||||
void column_generator::on_revision(const char *id, uint64_t &)
|
||||
{
|
||||
if (has_many_to_many_) {
|
||||
return;
|
||||
}
|
||||
push(id);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user