added sequence_pk_generator implementation
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
#ifndef MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
#define MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
|
||||
#include "matador/utils/error.hpp"
|
||||
#include "matador/utils/result.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace matador::sql {
|
||||
class executor;
|
||||
}
|
||||
namespace matador::query {
|
||||
class abstract_pk_generator {
|
||||
public:
|
||||
virtual ~abstract_pk_generator() = default;
|
||||
virtual utils::result<int64_t, utils::error> next_id(const sql::executor& exec) = 0;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_ABSTRACT_PK_GENERATOR_HPP
|
||||
@@ -61,8 +61,7 @@ public:
|
||||
[[nodiscard]] utils::result<std::optional<sql::record>, utils::error> fetch_one(const sql::executor &exec) const;
|
||||
|
||||
template<typename Type>
|
||||
utils::result<std::optional<Type>, utils::error> fetch_value(const sql::executor &exec)
|
||||
{
|
||||
utils::result<std::optional<Type>, utils::error> fetch_value(const sql::executor &exec) {
|
||||
const auto result = fetch_one(exec);
|
||||
if (!result.is_ok()) {
|
||||
return utils::failure(result.err());
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef MATADOR_SEQUENCE_PK_GENERATOR_H
|
||||
#define MATADOR_SEQUENCE_PK_GENERATOR_H
|
||||
|
||||
#include "matador/query/abstract_pk_generator.hpp"
|
||||
#include "matador/query/intermediates/fetchable_query.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace matador::query {
|
||||
class sequence_pk_generator : public abstract_pk_generator {
|
||||
public:
|
||||
explicit sequence_pk_generator(const std::string& sequence_name);
|
||||
|
||||
utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
|
||||
|
||||
private:
|
||||
fetchable_query query_;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_SEQUENCE_PK_GENERATOR_H
|
||||
Reference in New Issue
Block a user