added support in Model for removing the whole tree
(without lists/vectors at the moment yet) git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1206 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
63
src/model.h
63
src/model.h
@@ -118,8 +118,8 @@ public:
|
||||
virtual bool update(ModelData & model_data, bool update_whole_tree = true);
|
||||
|
||||
virtual void generate_remove_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||
virtual bool remove(ModelData * model_data = nullptr);
|
||||
virtual bool remove(ModelData & model_data);
|
||||
virtual bool remove(ModelData * model_data = nullptr, bool remove_whole_tree = true);
|
||||
virtual bool remove(ModelData & model_data, bool remove_whole_tree = true);
|
||||
|
||||
virtual bool save(ModelData * model_data = nullptr, bool save_whole_tree = true);
|
||||
virtual bool save(ModelData & model_data, bool save_whole_tree = true);
|
||||
@@ -188,6 +188,7 @@ protected:
|
||||
|
||||
virtual bool insert_tree(bool insert_whole_tree);
|
||||
virtual bool update_tree(bool update_whole_tree);
|
||||
virtual bool remove_tree(bool remove_whole_tree);
|
||||
virtual bool save_tree(bool save_whole_tree);
|
||||
|
||||
virtual void map_values_from_query();
|
||||
@@ -672,6 +673,8 @@ protected:
|
||||
template<typename FieldValue>
|
||||
void field_generic(const wchar_t * db_field_name, const wchar_t * flat_field_name, FieldValue & field_value, bool insertable, bool updatable, bool is_primary_key)
|
||||
{
|
||||
PT::Log * log = model_connector->get_logger();
|
||||
|
||||
if( model_connector && model_env )
|
||||
{
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_SET_FIELD_VALUE )
|
||||
@@ -689,8 +692,13 @@ protected:
|
||||
}
|
||||
else
|
||||
{
|
||||
// IMPROVE ME
|
||||
// put some log here
|
||||
// the log has to be generated by a parent call
|
||||
// it should compare model_env->field_index with the number of keys
|
||||
// if( log )
|
||||
// {
|
||||
// // IMPROVE ME a better log message is required
|
||||
// (*log) << PT::Log::log1 << "Morm: incorrect number of keys found in model objects" << PT::Log::logend;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -706,8 +714,12 @@ protected:
|
||||
}
|
||||
else
|
||||
{
|
||||
// IMPROVE ME
|
||||
// put some log here
|
||||
if( log )
|
||||
{
|
||||
// IMPROVE ME a better log message is required
|
||||
// the log can be generated by a parent call
|
||||
(*log) << PT::Log::log1 << "Morm: incorrect number of keys found in model objects" << PT::Log::logend;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1052,49 +1064,44 @@ protected:
|
||||
field_model_set_parent_key(db_field_name, flat_field_name, field_model);
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_INSERT && has_foreign_key )
|
||||
if( !is_empty_field(db_field_name) )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_INSERT && has_foreign_key )
|
||||
{
|
||||
field_model.insert_tree(true);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_INSERT && !has_foreign_key )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_INSERT && !has_foreign_key )
|
||||
{
|
||||
field_model.insert_tree(true);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_UPDATE && has_foreign_key )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_UPDATE && has_foreign_key )
|
||||
{
|
||||
field_model.update_tree(true);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_UPDATE && !has_foreign_key )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_UPDATE && !has_foreign_key )
|
||||
{
|
||||
field_model.update_tree(true);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_SAVE && has_foreign_key )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_REMOVE && has_foreign_key )
|
||||
{
|
||||
field_model.remove_tree(true);
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_REMOVE && !has_foreign_key )
|
||||
{
|
||||
field_model.remove_tree(true);
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY_AND_SAVE && has_foreign_key )
|
||||
{
|
||||
field_model.save_tree(true);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_SAVE && !has_foreign_key )
|
||||
{
|
||||
if( !is_empty_field(db_field_name) )
|
||||
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY_AND_SAVE && !has_foreign_key )
|
||||
{
|
||||
field_model.save_tree(true);
|
||||
}
|
||||
|
Reference in New Issue
Block a user