added alter table command to fluent query builder (progress)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user