added alter table command to fluent query builder (progress)

This commit is contained in:
Sascha Kühl
2025-11-03 16:21:26 +01:00
parent 557abecf91
commit c3c7ea57a2
22 changed files with 451 additions and 26 deletions
+40 -1
View File
@@ -2,11 +2,19 @@
#include "matador/orm/error_code.hpp"
#include "matador/orm/session.hpp"
#include "matador/query/query.hpp"
#include "matador/sql/backend_provider.hpp"
#include "matador/sql/connection_pool.hpp"
#include "matador/sql/dialect.hpp"
namespace matador::orm {
schema::schema(sql::connection_pool& pool)
: repo_(sql::backend_provider::instance().connection_dialect(pool.info().type).default_schema_name())
, pool_(pool) {
}
schema::schema(sql::connection_pool &pool, const std::string& name)
: repo_(name)
, pool_(pool) {}
@@ -69,7 +77,38 @@ matador::utils::result<void, matador::utils::error> matador::orm::schema::create
}
matador::utils::result<void, matador::utils::error> matador::orm::schema::drop() const {
return utils::ok<void>();
std::vector<std::string> drop_sql_commands;
auto c = pool_.acquire();
for (const auto &node: repo_) {
auto ctx = query::query::drop()
.table(node->name())
.compile(*c);
drop_sql_commands.push_back(ctx.sql);
// determine constraints and drop them
for (auto it = node->info().endpoint_begin(); it != node->info().endpoint_end(); ++it) {
const auto ctx = query::query::alter()
.table( "" )
.add_constraint( it->second->node().name() )
.foreign_key( "" )
.references( "" ).compile(*c);
}
// for ( const auto& [sql, command] : ctx.additional_commands ) {
// if (auto result = c->execute(ctx.sql); !result) {
// return utils::failure(result.err());
// }
// }
}
// execute additional commands (e.g. ALTER TABLE ADD FK)
for (const auto &sql: drop_sql_commands) {
std::cout << sql << std::endl;
if (auto result = c->execute(sql); !result) {
return utils::failure(result.err());
}
}
return utils::ok<void>();
}
matador::utils::result<void, matador::utils::error> matador::orm::schema::drop_table(const std::string& table_name) const {