fixed: in Model::remove(ModelData & model_data, bool remove_whole_tree) we didn't use remove_whole_tree parameter
fixed: compilation erorr when inserting/updating a Model object which has child lists without Model objects such as std::list<int> added: to Model: methods insert, update, remove and save with one argument: bool save_whole_tree git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1217 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
334201fe15
commit
ac67f0079a
|
@ -239,6 +239,12 @@ bool Model::insert(ModelData & model_data, bool insert_whole_tree)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Model::insert(bool insert_whole_tree)
|
||||||
|
{
|
||||||
|
return insert(nullptr, insert_whole_tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Model::insert(ModelData * model_data, bool insert_whole_tree)
|
bool Model::insert(ModelData * model_data, bool insert_whole_tree)
|
||||||
{
|
{
|
||||||
ModelEnv model_env_local;
|
ModelEnv model_env_local;
|
||||||
|
@ -335,6 +341,12 @@ bool Model::update(ModelData & model_data, bool update_whole_tree)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Model::update(bool update_whole_tree)
|
||||||
|
{
|
||||||
|
return update(nullptr, update_whole_tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Model::update(ModelData * model_data, bool update_whole_tree)
|
bool Model::update(ModelData * model_data, bool update_whole_tree)
|
||||||
{
|
{
|
||||||
ModelEnv model_env_local;
|
ModelEnv model_env_local;
|
||||||
|
@ -419,7 +431,13 @@ void Model::generate_remove_query(PT::TextStream & stream, ModelData * model_dat
|
||||||
|
|
||||||
bool Model::remove(ModelData & model_data, bool remove_whole_tree)
|
bool Model::remove(ModelData & model_data, bool remove_whole_tree)
|
||||||
{
|
{
|
||||||
return remove(&model_data);
|
return remove(&model_data, remove_whole_tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Model::remove(bool remove_whole_tree)
|
||||||
|
{
|
||||||
|
return remove(nullptr, remove_whole_tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -494,6 +512,13 @@ bool Model::save(ModelData & model_data, bool save_whole_tree)
|
||||||
return save(&model_data, save_whole_tree);
|
return save(&model_data, save_whole_tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Model::save(bool save_whole_tree)
|
||||||
|
{
|
||||||
|
return save(nullptr, save_whole_tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Model::save(ModelData * model_data, bool save_whole_tree)
|
bool Model::save(ModelData * model_data, bool save_whole_tree)
|
||||||
{
|
{
|
||||||
ModelEnv model_env_local;
|
ModelEnv model_env_local;
|
||||||
|
|
42
src/model.h
42
src/model.h
|
@ -39,6 +39,7 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
#include "textstream/textstream.h"
|
#include "textstream/textstream.h"
|
||||||
#include "modelconnector.h"
|
#include "modelconnector.h"
|
||||||
|
@ -109,19 +110,24 @@ public:
|
||||||
virtual std::string to_string();
|
virtual std::string to_string();
|
||||||
|
|
||||||
virtual void generate_insert_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
virtual void generate_insert_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||||
virtual bool insert(ModelData * model_data = nullptr, bool insert_whole_tree = true);
|
virtual bool insert(ModelData * model_data, bool insert_whole_tree = true);
|
||||||
virtual bool insert(ModelData & model_data, bool insert_whole_tree = true);
|
virtual bool insert(ModelData & model_data, bool insert_whole_tree = true);
|
||||||
|
virtual bool insert(bool insert_whole_tree = true);
|
||||||
|
|
||||||
virtual void generate_update_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
virtual void generate_update_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||||
virtual bool update(ModelData * model_data = nullptr, bool update_whole_tree = true);
|
virtual bool update(ModelData * model_data, bool update_whole_tree = true);
|
||||||
virtual bool update(ModelData & model_data, bool update_whole_tree = true);
|
virtual bool update(ModelData & model_data, bool update_whole_tree = true);
|
||||||
|
virtual bool update(bool update_whole_tree = true);
|
||||||
|
|
||||||
virtual void generate_remove_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
virtual void generate_remove_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||||
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 remove(ModelData & model_data, bool remove_whole_tree = true);
|
virtual bool remove(ModelData & model_data, bool remove_whole_tree = true);
|
||||||
|
virtual bool remove(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);
|
||||||
virtual bool save(ModelData & model_data, bool save_whole_tree = true);
|
virtual bool save(ModelData & model_data, bool save_whole_tree = true);
|
||||||
|
virtual bool save(bool save_whole_tree = true);
|
||||||
|
|
||||||
|
|
||||||
virtual void generate_select_columns(PT::TextStream & stream);
|
virtual void generate_select_columns(PT::TextStream & stream);
|
||||||
|
|
||||||
|
@ -1106,14 +1112,29 @@ protected:
|
||||||
{
|
{
|
||||||
if( model_connector && model_env )
|
if( model_connector && model_env )
|
||||||
{
|
{
|
||||||
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_SET_PARENT_ID )
|
if( !is_empty_field(db_field_name) )
|
||||||
{
|
{
|
||||||
field_list_set_parent_key(db_field_name, field_container, model_container_type);
|
if constexpr (std::is_base_of<Model, ModelContainerType>())
|
||||||
}
|
{
|
||||||
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_SET_PARENT_ID )
|
||||||
|
{
|
||||||
|
field_list_set_parent_key(db_field_name, field_container, model_container_type);
|
||||||
|
}
|
||||||
|
|
||||||
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY )
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY )
|
||||||
{
|
{
|
||||||
field_list_iterate_through_childs(db_field_name, field_container, model_container_type);
|
field_list_iterate_through_childs(db_field_name, field_container, model_container_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PT::Log * plog = model_connector->get_logger();
|
||||||
|
|
||||||
|
if( plog )
|
||||||
|
{
|
||||||
|
(*plog) << "Morm: ignoring " << db_field_name << " as this is not a container with Model objects" << PT::Log::logend;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GENERATING_FLAT_STRING )
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GENERATING_FLAT_STRING )
|
||||||
|
@ -1256,6 +1277,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RENAME ME to something like select_field() or field_select()
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
void add_field_for_select(const wchar_t * new_column_expression, const wchar_t * new_column_name, FieldValue & field_value)
|
void add_field_for_select(const wchar_t * new_column_expression, const wchar_t * new_column_name, FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue