schema creation progress

This commit is contained in:
2025-12-07 22:18:01 +01:00
parent 2e354b435c
commit 2fcb504b9a
11 changed files with 336 additions and 168 deletions
+38
View File
@@ -69,9 +69,26 @@ utils::result<void, utils::error> schema::create() const {
}
}
// create primary key constraints
for (const auto &node: repo_) {
for (const auto& cons : node->info().constraints()) {
if (!cons.is_primary_key_constraint()) {
continue;
}
auto ctx = build_add_constraint_context(*node, cons);
std::cout << ctx.sql << std::endl;
if (auto result = c->execute(ctx.sql); !result) {
return utils::failure(result.err());
}
}
}
// create table constraints
for (const auto &node: repo_) {
for (const auto& cons : node->info().constraints()) {
if (cons.is_primary_key_constraint()) {
continue;
}
auto ctx = build_add_constraint_context(*node, cons);
std::cout << ctx.sql << std::endl;
@@ -85,9 +102,30 @@ utils::result<void, utils::error> schema::create() const {
utils::result<void, utils::error> schema::drop() const {
auto c = pool_.acquire();
// drop table primary key constraints
for (const auto &node: repo_) {
for (const auto& cons : node->info().constraints()) {
if (cons.is_primary_key_constraint()) {
continue;
}
auto ctx = query::query::alter()
.table(node->name())
.drop_constraint(cons.name())
.compile(*c);
std::cout << ctx.sql << std::endl;
if (auto result = c->execute(ctx.sql); !result) {
return utils::failure(result.err());
}
}
}
// drop table constraints
for (const auto &node: repo_) {
for (const auto& cons : node->info().constraints()) {
if (!cons.is_primary_key_constraint()) {
continue;
}
auto ctx = query::query::alter()
.table(node->name())
.drop_constraint(cons.name())