added basic support for making migrations
This commit is contained in:
113
src/model.cpp
113
src/model.cpp
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user