insert_query_builder progress
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "matador/sql/dialect.hpp"
|
||||
|
||||
#include "matador/query/query.hpp"
|
||||
#include "matador/query/generator.hpp"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
@@ -18,6 +19,41 @@ session::session(session_context&& ctx, const query::schema &scm)
|
||||
, dialect_(sql::backend_provider::instance().connection_dialect(pool_.info().type))
|
||||
, schema_(scm)
|
||||
, resolver_service_(ctx.resolver_service) {
|
||||
using namespace matador::utils;
|
||||
for (const auto &[type, node] : schema_) {
|
||||
query::query_contexts queries;
|
||||
|
||||
// SELECT all
|
||||
queries.select_all = query::select(node.table())
|
||||
.from(node.name())
|
||||
.compile(dialect_);
|
||||
if (node.table().has_primary_key()) {
|
||||
// SELECT one
|
||||
queries.select_one = query::select(node.table())
|
||||
.from(node.name())
|
||||
.where(*node.table().primary_key_column().value() == _)
|
||||
.compile(dialect_);
|
||||
// UPDATE one
|
||||
auto update_set = query::update(node.table());
|
||||
for (const auto &col: node.table().columns()) {
|
||||
update_set.set(col, _);
|
||||
}
|
||||
queries.update_one = update_set.where(*node.table().primary_key_column().value() == _)
|
||||
.compile(dialect_);
|
||||
// DELETE one
|
||||
queries.delete_one = query::remove()
|
||||
.from(node.name())
|
||||
.where(*node.table().primary_key_column().value() == _)
|
||||
.compile(dialect_);
|
||||
}
|
||||
// INSERT one
|
||||
queries.insert = query::insert()
|
||||
.into(node.name(), node.table())
|
||||
.values(query::generator::placeholders(node.table().columns().size()))
|
||||
.compile(dialect_);
|
||||
|
||||
contexts_by_type_[node.node().type_index()] = queries;
|
||||
}
|
||||
}
|
||||
|
||||
utils::result<void, utils::error> session::drop_table(const std::string &table_name) const {
|
||||
|
||||
Reference in New Issue
Block a user