added basic support for making migrations

This commit is contained in:
2021-05-14 03:24:53 +02:00
parent de4abeb91c
commit b12037a7e5
4 changed files with 170 additions and 3 deletions

View File

@@ -33,6 +33,7 @@
*/
#include "model.h"
#include "utf8/utf8.h"
namespace morm
@@ -177,6 +178,68 @@ bool Model::found()
}
void Model::get_table_name(PT::WTextStream & stream, bool with_schema_name, ModelData * model_data, bool clear_stream)
{
if( clear_stream )
{
stream.clear();
}
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->model_data = model_data;
if( model_connector )
{
DbConnector * db_connector = model_connector->get_db_connector();
if( db_connector )
{
try
{
table();
if( with_schema_name && !model_env->schema_name.empty() )
{
stream << model_env->schema_name;
stream << '.';
}
stream << model_env->table_name;
}
catch(...)
{
model_env = nullptr;
throw;
}
}
}
model_env = nullptr;
}
void Model::get_table_name(std::wstring & str, bool with_schema_name, ModelData * model_data, bool clear_string)
{
PT::WTextStream stream;
if( clear_string )
str.clear();
get_table_name(stream, with_schema_name, model_data, false);
stream.to_string(str);
}
void Model::get_table_name(std::string & str, bool with_schema_name, ModelData * model_data, bool clear_string)
{
PT::WTextStream stream;
get_table_name(stream, with_schema_name, model_data, false);
PT::WideStreamToUTF8(stream, str, clear_string);
}
void Model::to_text(PT::TextStream & stream, ModelData * model_data, bool clear_stream, bool dump_mode)
{
if( clear_stream )
@@ -272,6 +335,7 @@ std::string Model::to_string()
void Model::generate_insert_query(PT::TextStream & stream, ModelData * model_data)
{
ModelEnv model_env_local;
@@ -797,6 +861,10 @@ void Model::clear()
bool Model::do_migration(int & current_table_version)
{
return true;
}
@@ -1449,5 +1517,50 @@ void Model::set_parent_key_in_childs()
}
}
bool Model::db_query(const char * raw_sql)
{
bool status = false;
if( model_connector )
{
DbConnector * db_connector = model_connector->get_db_connector();
if( db_connector )
{
status = db_connector->query(raw_sql);
}
}
return status;
}
bool Model::db_query(const std::string & raw_sql)
{
return db_query(raw_sql.c_str());
}
bool Model::db_query(const PT::TextStream & raw_sql)
{
bool status = false;
if( model_connector )
{
DbConnector * db_connector = model_connector->get_db_connector();
if( db_connector )
{
status = db_connector->query(raw_sql);
}
}
return status;
}
} // namespace