added sequence_pk_generator implementation
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
add_library(matador-orm STATIC
|
||||
../../include/matador/orm/error_code.hpp
|
||||
../../include/matador/orm/session.hpp
|
||||
../../include/matador/query/abstract_pk_generator.hpp
|
||||
../../include/matador/query/attribute_string_writer.hpp
|
||||
../../include/matador/query/basic_schema.hpp
|
||||
../../include/matador/query/builder.hpp
|
||||
@@ -19,6 +20,7 @@ add_library(matador-orm STATIC
|
||||
../../include/matador/query/fk_value_extractor.hpp
|
||||
../../include/matador/query/generator.hpp
|
||||
../../include/matador/query/insert_query_builder.hpp
|
||||
../../include/matador/query/insert_query_builder.hpp
|
||||
../../include/matador/query/intermediates/executable_query.hpp
|
||||
../../include/matador/query/intermediates/fetchable_query.hpp
|
||||
../../include/matador/query/intermediates/query_alter_intermediate.hpp
|
||||
@@ -64,6 +66,7 @@ add_library(matador-orm STATIC
|
||||
../../include/matador/query/query_utils.hpp
|
||||
../../include/matador/query/schema.hpp
|
||||
../../include/matador/query/select_query_builder.hpp
|
||||
../../include/matador/query/sequence_pk_generator.hpp
|
||||
../../include/matador/query/table.hpp
|
||||
../../include/matador/query/table_column.hpp
|
||||
../../include/matador/query/table_constraint.hpp
|
||||
@@ -159,6 +162,7 @@ add_library(matador-orm STATIC
|
||||
query/query_utils.cpp
|
||||
query/schema.cpp
|
||||
query/select_query_builder.cpp
|
||||
query/sequence_pk_generator.cpp
|
||||
query/table.cpp
|
||||
query/table_column.cpp
|
||||
query/table_constraint.cpp
|
||||
@@ -188,9 +192,7 @@ add_library(matador-orm STATIC
|
||||
sql/resolver_service.cpp
|
||||
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
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#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
|
||||
@@ -0,0 +1,19 @@
|
||||
#include "matador/query/sequence_pk_generator.hpp"
|
||||
#include "matador/query/query.hpp"
|
||||
|
||||
#include "matador/sql/error_code.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
sequence_pk_generator::sequence_pk_generator(const std::string& sequence_name)
|
||||
: query_(query::select().nextval(sequence_name)) {
|
||||
}
|
||||
|
||||
utils::result<int64_t, utils::error> sequence_pk_generator::next_id(const sql::executor& exec) {
|
||||
return query_.fetch_value<int64_t>(exec).and_then([](std::optional<int64_t> id) -> utils::result<int64_t, utils::error> {
|
||||
if (!id) {
|
||||
return utils::failure(utils::error(sql::error_code::RETRIEVE_DATA_FAILED, "Sequence returned no value"));
|
||||
}
|
||||
return utils::ok(*id);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user