fixed: in Model::generate_insert_query there was not ModelEnv set (was a null pointer)

similarly in generate_update_query and generate_remove_query
added: support std::vector<> in Model::field() methods
added: serializing std::vector and std::list for non-model classes in BaseExpression




git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1200 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2019-08-20 15:49:37 +00:00
parent 0a324a38ce
commit f8d88d1459
3 changed files with 262 additions and 14 deletions

View File

@@ -210,8 +210,11 @@ std::string Model::to_string()
void Model::generate_insert_query(PT::TextStream & stream)
void Model::generate_insert_query(PT::TextStream & stream, ModelData * model_data)
{
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->model_data = model_data;
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL;
if( model_connector )
@@ -224,7 +227,8 @@ void Model::generate_insert_query(PT::TextStream & stream)
}
}
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE;
// what about if an exception was thrown? this pointer will not be null
model_env = nullptr;
}
@@ -277,8 +281,11 @@ bool Model::insert(ModelData & model_data)
}
void Model::generate_update_query(PT::TextStream & stream)
void Model::generate_update_query(PT::TextStream & stream, ModelData * model_data)
{
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->model_data = model_data;
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL;
if( model_connector )
@@ -291,7 +298,8 @@ void Model::generate_update_query(PT::TextStream & stream)
}
}
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE;
// what about if an exception was thrown? this pointer will not be null
model_env = nullptr;
}
@@ -337,20 +345,25 @@ bool Model::update(ModelData & model_data)
}
void Model::generate_remove_query(PT::TextStream & stream)
void Model::generate_remove_query(PT::TextStream & stream, ModelData * model_data)
{
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->model_data = model_data;
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL;
if( model_connector )
{
DbConnector * db_connector = model_connector->get_db_connector();
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL;
if( db_connector )
{
db_connector->generate_remove_query(stream, *this);
}
model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE;
}
// what about if an exception was thrown? this pointer will not be null
model_env = nullptr;
}