sequence progress

This commit is contained in:
Sascha Kühl 2026-03-15 22:33:35 +01:00
parent 86c9e6b1cd
commit 53b10fd1f9
4 changed files with 43 additions and 7 deletions

View File

@ -36,6 +36,7 @@ set(TEST_SOURCES
../../../test/models/model_metas.hpp
../../../test/backends/SequenceFixture.hpp
../../../test/backends/SequenceFixture.cpp
../../../test/backends/SequenceTest.cpp
)
set(LIBRARY_TEST_TARGET PostgresTests)

View File

@ -164,7 +164,7 @@ utils::result<bool, utils::error> connection::exists(const std::string &table_na
}
utils::result<bool, utils::error> connection::sequence_exists(const std::string& sequence_name) const {
return connection_->sequence_exists(sequence_name);
return connection_->sequence_exists(dialect().default_schema_name(), sequence_name);
}
bool has_unknown_columns(const std::vector<object::attribute> &columns) {

View File

@ -16,18 +16,24 @@ SequenceFixture::SequenceFixture()
}
SequenceFixture::~SequenceFixture() {
while (!sequences_to_drop.empty()) {
drop_sequence_if_exists(sequences_to_drop.top());
sequences_to_drop.pop();
}
REQUIRE(repo.drop(db));
REQUIRE(db.close());
while (!sequences_to_drop.empty()) {
drop_sequence_if_exists(sequences_to_drop.top());
sequences_to_drop.pop();
}
REQUIRE(repo.drop(db));
REQUIRE(db.close());
}
void SequenceFixture::check_sequence_exists(const std::string& sequence_name) const {
auto result = db.sequence_exists(sequence_name);
REQUIRE(result.is_ok());
REQUIRE(*result);
}
void SequenceFixture::check_sequence_not_exists(const std::string& sequence_name) const {
auto result = db.sequence_exists(sequence_name);
REQUIRE(result.is_ok());
REQUIRE(!*result);
}
void SequenceFixture::drop_sequence_if_exists(const std::string& sequence_name) const {

View File

@ -0,0 +1,29 @@
#include "catch2/catch_test_macros.hpp"
#include "matador/query/query.hpp"
#include "SequenceFixture.hpp"
using namespace matador::query;
using namespace matador::test;
TEST_CASE_METHOD(SequenceFixture, "", "[sequence]") {
auto result = query::create()
.sequence("person_seq")
.execute(db);
REQUIRE(result.is_ok());
sequences_to_drop.emplace("person_seq");
auto next_id = query::select()
.nextval("person_seq")
.fetch_value<uint32_t>(db);
REQUIRE(next_id.is_ok());
REQUIRE(*next_id == 1);
result = query::drop()
.sequence("person_seq")
.execute(db);
REQUIRE(result.is_ok());
}