pk generator progress and sequence test progress
This commit is contained in:
@@ -15,6 +15,7 @@ class abstract_pk_generator {
|
||||
public:
|
||||
virtual ~abstract_pk_generator() = default;
|
||||
virtual utils::result<int64_t, utils::error> next_id(const sql::executor& exec) = 0;
|
||||
virtual utils::result<int64_t, utils::error> current_id(const sql::executor& exec) = 0;
|
||||
|
||||
[[nodiscard]] utils::generator_type type() const;
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ public:
|
||||
explicit query_select_intermediate(const std::vector<table_column>& columns);
|
||||
|
||||
fetchable_query nextval(const std::string& sequence_name);
|
||||
fetchable_query currval(const std::string& sequence_name);
|
||||
|
||||
template<typename... Tables>
|
||||
query_from_intermediate from(const Tables&... tables) {
|
||||
|
||||
@@ -139,6 +139,19 @@ private:
|
||||
std::string sequence_name_;
|
||||
};
|
||||
|
||||
class query_select_currval_part final : public query_part {
|
||||
public:
|
||||
explicit query_select_currval_part(std::string sequence_name);
|
||||
|
||||
[[nodiscard]] const std::string& sequence_name() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::string sequence_name_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Represents the SQL FROM part
|
||||
|
||||
@@ -8,6 +8,7 @@ class manual_pk_generator : public abstract_pk_generator {
|
||||
public:
|
||||
manual_pk_generator();
|
||||
[[nodiscard]] utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
|
||||
[[nodiscard]] utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_MANUAL_PK_GENERATOR_HPP
|
||||
@@ -46,6 +46,7 @@ protected:
|
||||
|
||||
void visit(internal::query_select_part &part) override;
|
||||
void visit(internal::query_select_nextval_part &part) override;
|
||||
void visit(internal::query_select_currval_part &part) override;
|
||||
void visit(internal::query_from_part &part) override;
|
||||
void visit(internal::query_join_table_part &part) override;
|
||||
void visit(internal::query_join_query_part &part) override;
|
||||
|
||||
@@ -18,6 +18,7 @@ class query_add_primary_key_constraint_part;
|
||||
// Select
|
||||
class query_select_part;
|
||||
class query_select_nextval_part;
|
||||
class query_select_currval_part;
|
||||
class query_from_part;
|
||||
class query_join_table_part;
|
||||
class query_join_query_part;
|
||||
@@ -76,6 +77,7 @@ public:
|
||||
|
||||
virtual void visit(internal::query_select_part &part) = 0;
|
||||
virtual void visit(internal::query_select_nextval_part &part) = 0;
|
||||
virtual void visit(internal::query_select_currval_part &part) = 0;
|
||||
virtual void visit(internal::query_from_part &part) = 0;
|
||||
virtual void visit(internal::query_join_table_part &part) = 0;
|
||||
virtual void visit(internal::query_join_query_part &part) = 0;
|
||||
|
||||
@@ -12,9 +12,11 @@ public:
|
||||
explicit sequence_pk_generator(const std::string& sequence_name);
|
||||
|
||||
utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
|
||||
utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
|
||||
|
||||
private:
|
||||
fetchable_query query_;
|
||||
fetchable_query next_id_query_;
|
||||
fetchable_query current_id_query_;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_SEQUENCE_PK_GENERATOR_H
|
||||
@@ -2,15 +2,18 @@
|
||||
#define MATADOR_TABLE_PK_GENERATOR_HPP
|
||||
|
||||
#include "matador/query/abstract_pk_generator.hpp"
|
||||
#include "matador/query/intermediates/fetchable_query.hpp"
|
||||
|
||||
namespace matador::query {
|
||||
class table_pk_generator : public abstract_pk_generator {
|
||||
public:
|
||||
table_pk_generator(const std::string& table_name, const std::string& sequence_name);
|
||||
[[nodiscard]] utils::result<int64_t, utils::error> next_id(const sql::executor& exec) override;
|
||||
[[nodiscard]] utils::result<int64_t, utils::error> current_id(const sql::executor& exec) override;
|
||||
|
||||
private:
|
||||
std::string table_name;
|
||||
fetchable_query next_id_query_;
|
||||
fetchable_query current_id_query_;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_TABLE_PK_GENERATOR_HPP
|
||||
Reference in New Issue
Block a user