primary key generator progress: added primary_key_generator_finder
This commit is contained in:
@@ -189,7 +189,8 @@ add_library(matador-orm STATIC
|
||||
sql/statement.cpp
|
||||
sql/statement_cache.cpp
|
||||
../../include/matador/query/insert_query_builder.hpp
|
||||
)
|
||||
query/abstract_pk_generator.hpp
|
||||
)
|
||||
|
||||
target_include_directories(matador-orm
|
||||
PUBLIC
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifndef MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
#define MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
|
||||
namespace matador::query {
|
||||
class abstract_pk_generator {
|
||||
public:
|
||||
virtual ~abstract_pk_generator() = default;
|
||||
virtual unsigned int generate() = 0;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
@@ -3,8 +3,9 @@
|
||||
#include "matador/sql/executor.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
schema_node::schema_node(class table tab, const object::repository_node& node)
|
||||
schema_node::schema_node(class table tab, utils::generator_type generator_type, const object::repository_node& node)
|
||||
: table_(std::move(tab))
|
||||
, generator_type_(generator_type)
|
||||
, node_(std::move(node)) {
|
||||
}
|
||||
|
||||
@@ -16,6 +17,10 @@ const table &schema_node::table() const {
|
||||
return table_;
|
||||
}
|
||||
|
||||
utils::generator_type schema_node::generator_type() const {
|
||||
return generator_type_;
|
||||
}
|
||||
|
||||
const object::repository_node& schema_node::node() const {
|
||||
return node_;
|
||||
}
|
||||
|
||||
@@ -165,11 +165,11 @@ sql::query_context schema::build_drop_constraint_context(const object::repositor
|
||||
.compile(conn);
|
||||
}
|
||||
|
||||
schema::iterator schema::insert_table(const std::type_index &ti, const object::repository_node &node) {
|
||||
schema::iterator schema::insert_table(const std::type_index &ti, const object::repository_node &node, const utils::generator_type generator_type) {
|
||||
std::vector<table_column> columns;
|
||||
for (const auto &attr: node.info().attributes()) {
|
||||
columns.emplace_back(nullptr, attr.name(), attr.type(), attr.attributes());
|
||||
}
|
||||
return schema_nodes_.insert({ti, schema_node{table(node.name(), columns), node}}).first;
|
||||
return schema_nodes_.insert({ti, schema_node{table(node.name(), columns), generator_type, node}}).first;
|
||||
}
|
||||
} // namespace matador::query
|
||||
|
||||
Reference in New Issue
Block a user