orm schema class progress added SchemaTest.cpp

This commit is contained in:
Sascha Kühl
2025-10-31 16:28:34 +01:00
parent 5632746eb6
commit 557abecf91
9 changed files with 111 additions and 207 deletions
+35 -4
View File
@@ -1,15 +1,18 @@
#include "matador/orm/schema.hpp"
#include "matador/orm/error_code.hpp"
#include "matador/orm/session.hpp"
#include "matador/query/query.hpp"
#include "matador/sql/connection_pool.hpp"
namespace matador::orm {
schema::schema( const std::string& name )
: repo_(name){}
schema::schema(sql::connection_pool &pool, const std::string& name)
: repo_(name)
, pool_(pool) {}
}
matador::utils::result<void, matador::utils::error> matador::orm::schema::create(sql::connection_pool &pool) const {
matador::utils::result<void, matador::utils::error> matador::orm::schema::create() const {
// Step 1: Build dependency graph
// std::unordered_map<std::string, std::vector<std::string> > dependency_graph;
// std::unordered_map<std::string, std::pair<int,object::repository::node_ptr>> in_degree;
@@ -40,7 +43,7 @@ matador::utils::result<void, matador::utils::error> matador::orm::schema::create
// }
std::vector<std::string> fk_sql_commands;
auto c = pool.acquire();
auto c = pool_.acquire();
for (const auto &node: repo_) {
auto ctx = query::query::create()
.table(node->name(), node->info().definition().columns())
@@ -68,3 +71,31 @@ 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>();
}
matador::utils::result<void, matador::utils::error> matador::orm::schema::drop_table(const std::string& table_name) const {
const auto c = pool_.acquire();
auto result = query::query::drop()
.table(table_name)
.execute(*c);
if (result.is_error()) {
return utils::failure(result.err());
}
return utils::ok<void>();
}
matador::utils::result<std::vector<matador::object::attribute_definition>, matador::utils::error> matador::orm::schema::describe_table(const std::string& table_name) const {
const auto c = pool_.acquire();
if (!c.valid()) {
return utils::failure(make_error(error_code::NoConnectionAvailable, "Failed to acquire connection."));
}
return utils::ok(c->describe(table_name).release());
}
matador::utils::result<bool, matador::utils::error> matador::orm::schema::table_exists(const std::string& table_name) const {
const auto c = pool_.acquire();
if (!c.valid()) {
return utils::failure(make_error(error_code::NoConnectionAvailable, "Failed to acquire connection."));
}
return c->exists(repo_.name(), table_name);
}
-12
View File
@@ -1,12 +0,0 @@
#include "matador/orm/session_insert_builder.hpp"
namespace matador::orm {
void session_insert_builder::on_revision(const char* id, uint64_t& x) {
push(id, x);
}
void session_insert_builder::push(const std::string& column_name, const utils::database_type& value) {
entity_insert_data_.back().columns.emplace_back(column_name);
entity_insert_data_.back().values.emplace_back(value);
}
}