column, placeholder and column_value generator progress
This commit is contained in:
@@ -57,7 +57,6 @@ add_library(matador-orm STATIC
|
||||
../../include/matador/sql/abstract_sql_logger.hpp
|
||||
../../include/matador/sql/backend_provider.hpp
|
||||
../../include/matador/sql/column.hpp
|
||||
../../include/matador/sql/column_generator.hpp
|
||||
../../include/matador/sql/connection.hpp
|
||||
../../include/matador/sql/connection_info.hpp
|
||||
../../include/matador/sql/dialect.hpp
|
||||
@@ -133,7 +132,6 @@ add_library(matador-orm STATIC
|
||||
query/value_extractor.cpp
|
||||
sql/backend_provider.cpp
|
||||
sql/column.cpp
|
||||
sql/column_generator.cpp
|
||||
sql/connection.cpp
|
||||
sql/connection_info.cpp
|
||||
sql/connection_pool.cpp
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
#include "matador/query/generator.hpp"
|
||||
|
||||
namespace matador::query::generator {
|
||||
column_generator2::column_generator2( const std::string& table_name, const column_generator_options options)
|
||||
column_generator::column_generator( const std::string& table_name, const column_generator_options options)
|
||||
: options_(options) {
|
||||
table_stack_.push(table_name.empty() ? std::make_shared<sql::table>() : std::make_shared<sql::table>(table_name));
|
||||
}
|
||||
|
||||
column_generator2::column_generator2(const object::repository& repo, const std::string& table_name, const column_generator_options options)
|
||||
column_generator::column_generator(const object::repository& repo, const std::string& table_name, const column_generator_options options)
|
||||
: repo_(std::cref(repo))
|
||||
, options_(options) {
|
||||
table_stack_.push(table_name.empty() ? std::make_shared<sql::table>() : std::make_shared<sql::table>(table_name));
|
||||
}
|
||||
|
||||
void column_generator2::on_revision( const char* id, uint64_t& ) {
|
||||
void column_generator::on_revision( const char* id, uint64_t& ) {
|
||||
push(id);
|
||||
}
|
||||
|
||||
void column_generator2::push( const std::string& column_name ) {
|
||||
void column_generator::push( const std::string& column_name ) {
|
||||
if (is_column_generator_option_set(options_, column_generator_options::GenerateAlias)) {
|
||||
char str[4];
|
||||
snprintf(str, 4, "c%02d", ++column_index);
|
||||
|
||||
@@ -14,7 +14,16 @@ executable_query query_into_intermediate::values(std::vector<std::variant<utils:
|
||||
return {context_};
|
||||
}
|
||||
|
||||
executable_query query_into_intermediate::values( std::vector<utils::database_type>&& values ) {
|
||||
executable_query query_into_intermediate::values(std::vector<utils::placeholder>&& values) {
|
||||
std::vector<std::variant<utils::placeholder, utils::database_type>> transformed_values;
|
||||
transformed_values.reserve(values.size());
|
||||
for (auto&& val : values) {
|
||||
transformed_values.emplace_back(val);
|
||||
}
|
||||
return this->values(std::move(transformed_values));
|
||||
}
|
||||
|
||||
executable_query query_into_intermediate::values(std::vector<utils::database_type>&& values) {
|
||||
std::vector<std::variant<utils::placeholder, utils::database_type>> transformed_values;
|
||||
transformed_values.reserve(values.size());
|
||||
for (auto&& val : values) {
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
#include "matador/sql/column_generator.hpp"
|
||||
|
||||
#include "matador/sql/table.hpp"
|
||||
|
||||
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)
|
||||
: column_infos_(column_infos)
|
||||
, table_schema_(scm)
|
||||
, force_lazy_(force_lazy)
|
||||
{
|
||||
table_name_stack_.push(table_name);
|
||||
seen_tables.insert(table_name);
|
||||
}
|
||||
|
||||
std::vector<column> column_generator::generate( const object::repository& scm, const std::string& name, bool /*force_lazy*/ ) {
|
||||
const auto info = scm.basic_info(name);
|
||||
if (!info) {
|
||||
return {};
|
||||
}
|
||||
|
||||
std::vector<column> columns;
|
||||
for (const auto& attr : info.value().get().definition()) {
|
||||
columns.emplace_back(attr.name());
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
||||
void column_generator::on_revision(const char *id, uint64_t &)
|
||||
{
|
||||
push(id);
|
||||
}
|
||||
|
||||
void column_generator::push(const std::string &column_name)
|
||||
{
|
||||
char str[4];
|
||||
snprintf(str, 4, "c%02d", ++column_index);
|
||||
column_infos_.emplace_back(table{table_name_stack_.top()}, column_name, str);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user