added column generator and tests

This commit is contained in:
2023-11-11 08:29:22 +01:00
parent ae236746ad
commit 30f2126225
20 changed files with 917 additions and 19 deletions
+28
View File
@@ -0,0 +1,28 @@
#include "matador/sql/column_generator.hpp"
namespace matador::sql {
column_generator::column_generator(std::vector<column> &columns)
: columns_(columns) {}
void column_generator::on_primary_key(const char *id, std::string &pk, size_t size)
{
on_attribute(id, pk, { size, utils::constraints::PRIMARY_KEY });
}
void column_generator::on_revision(const char *id, unsigned long long int &x)
{
on_attribute(id, x);
}
void column_generator::on_belongs_to(const char *id, utils::identifiable &x, utils::cascade_type)
{
}
void column_generator::on_has_one(const char *id, utils::identifiable &x, utils::cascade_type)
{
}
}
+15 -10
View File
@@ -143,7 +143,12 @@ query_builder& query_builder::remove() {
return *this;
}
query_builder& query_builder::table(const std::string &table, std::initializer_list<column> columns) {
query_builder& query_builder::table(const std::string &table, std::initializer_list<column> columns)
{
return this->table(table, std::vector<column>{columns});
}
query_builder &query_builder::table(const std::string &table, const std::vector<column> &columns) {
transition_to(state_t::QUERY_TABLE_CREATE);
query_parts_.emplace_back(" " + dialect_.token_at(dialect::token_t::TABLE) + " " + dialect_.prepare_identifier(table) + " ");
@@ -151,16 +156,16 @@ query_builder& query_builder::table(const std::string &table, std::initializer_l
std::string result = "(";
if (columns.size() < 2) {
for (const auto &col : columns) {
result.append(build_create_column(col, dialect_));
}
for (const auto &col : columns) {
result.append(build_create_column(col, dialect_));
}
} else {
auto it = columns.begin();
result.append(build_create_column(*it++, dialect_));
for (; it != columns.end(); ++it) {
result.append(", ");
result.append(build_create_column(*it, dialect_));
}
auto it = columns.begin();
result.append(build_create_column(*it++, dialect_));
for (; it != columns.end(); ++it) {
result.append(", ");
result.append(build_create_column(*it, dialect_));
}
}
result += ")";