orm schema class progress added SchemaTest.cpp
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user