renamed in Model: map_fields() to fields(), prepare_table() to table()

This commit is contained in:
Tomasz Sowa 2021-05-13 03:27:21 +02:00
parent 2ad6c8c258
commit 6eaa9088e5
4 changed files with 48 additions and 53 deletions

View File

@ -121,7 +121,7 @@ void BaseExpression::generate_from_model(Model & model)
{ {
before_generate_from_model(); before_generate_from_model();
dump_additional_info(model); dump_additional_info(model);
model.map_fields(); model.fields();
after_generate_from_model(); after_generate_from_model();
} }
} }

View File

@ -181,7 +181,7 @@ public:
model.model_env = &model_env; model.model_env = &model_env;
model.model_env->model_data = model_data; model.model_env->model_data = model_data;
model.model_env->finder_helper = &finder_helper; model.model_env->finder_helper = &finder_helper;
model.prepare_table(); model.table();
model.model_env->add_table_name_to_finder_helper(); model.model_env->add_table_name_to_finder_helper();
return *this; return *this;

View File

@ -127,7 +127,7 @@ ModelConnector * Model::get_connector()
} }
void Model::prepare_table() void Model::table()
{ {
if( model_connector ) if( model_connector )
{ {
@ -135,12 +135,12 @@ void Model::prepare_table()
if( plog ) if( plog )
{ {
(*plog) << PT::Log::log1 << "Morm: you should provide the table name e.g. provide prepare_table() method and call table(...) there" << PT::Log::logend; (*plog) << PT::Log::log1 << "Morm: you should provide the table name e.g. provide table() method and call table(...) there" << PT::Log::logend;
} }
} }
} }
void Model::table(const wchar_t * table_name) void Model::table_name(const wchar_t * table_name)
{ {
if( model_env ) if( model_env )
{ {
@ -151,7 +151,7 @@ void Model::table(const wchar_t * table_name)
} }
} }
void Model::table(const wchar_t * schema_name, const wchar_t * table_name) void Model::table_name(const wchar_t * schema_name, const wchar_t * table_name)
{ {
if( model_env ) if( model_env )
{ {
@ -200,7 +200,7 @@ void Model::to_text(PT::TextStream & stream, ModelData * model_data, bool clear_
{ {
try try
{ {
// prepare_table(); at the moment flat strings (json/space) do not need a table name // table(); at the moment flat strings (json/space) do not need a table name
flat_connector->to_text(stream, *this); flat_connector->to_text(stream, *this);
} }
catch(...) catch(...)
@ -288,7 +288,7 @@ void Model::generate_insert_query(PT::TextStream & stream, ModelData * model_dat
{ {
try try
{ {
prepare_table(); table();
db_connector->generate_insert_query(stream, *this); db_connector->generate_insert_query(stream, *this);
} }
catch(...) catch(...)
@ -325,7 +325,7 @@ bool Model::insert(ModelData * model_data, bool insert_whole_tree)
try try
{ {
prepare_table(); table();
status = insert_tree(insert_whole_tree); status = insert_tree(insert_whole_tree);
} }
catch(...) catch(...)
@ -351,7 +351,7 @@ bool Model::insert_tree(bool insert_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_INSERT; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_INSERT;
map_fields(); fields();
} }
if( model_connector ) if( model_connector )
@ -398,7 +398,7 @@ bool Model::insert_tree(bool insert_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_INSERT; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_INSERT;
map_fields(); fields();
} }
return result; return result;
@ -420,7 +420,7 @@ void Model::generate_update_query(PT::TextStream & stream, ModelData * model_dat
if( db_connector ) if( db_connector )
{ {
prepare_table(); table();
db_connector->generate_update_query(stream, *this); db_connector->generate_update_query(stream, *this);
} }
} }
@ -452,7 +452,7 @@ bool Model::update(ModelData * model_data, bool update_whole_tree)
try try
{ {
prepare_table(); table();
status = update_tree(update_whole_tree); status = update_tree(update_whole_tree);
} }
catch(...) catch(...)
@ -482,7 +482,7 @@ bool Model::update_tree(bool update_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_UPDATE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_UPDATE;
map_fields(); fields();
} }
if( model_connector ) if( model_connector )
@ -510,7 +510,7 @@ bool Model::update_tree(bool update_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_UPDATE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_UPDATE;
map_fields(); fields();
} }
return result; return result;
@ -531,7 +531,7 @@ void Model::generate_remove_query(PT::TextStream & stream, ModelData * model_dat
if( db_connector ) if( db_connector )
{ {
prepare_table(); table();
db_connector->generate_remove_query(stream, *this); db_connector->generate_remove_query(stream, *this);
} }
} }
@ -564,7 +564,7 @@ bool Model::remove(ModelData * model_data, bool remove_whole_tree)
try try
{ {
prepare_table(); table();
status = remove_tree(remove_whole_tree); status = remove_tree(remove_whole_tree);
} }
catch(...) catch(...)
@ -594,7 +594,7 @@ bool Model::remove_tree(bool remove_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_REMOVE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_REMOVE;
map_fields(); fields();
} }
if( model_connector ) if( model_connector )
@ -629,7 +629,7 @@ bool Model::remove_tree(bool remove_whole_tree)
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_REMOVE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_REMOVE;
map_fields(); fields();
} }
return result; return result;
@ -660,7 +660,7 @@ bool Model::save(ModelData * model_data, bool save_whole_tree)
try try
{ {
prepare_table(); table();
status = save_tree(save_whole_tree); status = save_tree(save_whole_tree);
} }
catch(...) catch(...)
@ -688,7 +688,7 @@ bool Model::save_tree(bool save_whole_tree)
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITH_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_SAVE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_SAVE;
map_fields(); fields();
} }
ModelEnv * old_model_env = model_env; // remove, insert or update will set model_env to nullptr ModelEnv * old_model_env = model_env; // remove, insert or update will set model_env to nullptr
@ -722,7 +722,7 @@ bool Model::save_tree(bool save_whole_tree)
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_THROUGH_CHILDS_WITHOUT_FOREIGN_KEY;
model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_SAVE; model_env->model_work_submode = MORM_MODEL_WORK_SUBMODE_SAVE;
map_fields(); fields();
} }
return result; return result;
@ -754,7 +754,7 @@ void Model::map_values_from_query()
model_env->model_work_mode = MORM_MODEL_WORK_MODE_READING_VALUE_FROM_DB_RESULTSET; model_env->model_work_mode = MORM_MODEL_WORK_MODE_READING_VALUE_FROM_DB_RESULTSET;
model_env->was_primary_key_read = false; // whether or not there was at least one column with primary_key flag model_env->was_primary_key_read = false; // whether or not there was at least one column with primary_key flag
model_env->has_primary_key_set = true; // whether all primary_columns were different than null model_env->has_primary_key_set = true; // whether all primary_columns were different than null
map_fields(); fields();
model_env->model_work_mode = MORM_MODEL_WORK_MODE_NONE; model_env->model_work_mode = MORM_MODEL_WORK_MODE_NONE;
if( model_env->was_primary_key_read && model_env->has_primary_key_set ) if( model_env->was_primary_key_read && model_env->has_primary_key_set )
@ -781,8 +781,8 @@ void Model::clear()
try try
{ {
// prepare_table() doesn't have to be called // table() doesn't have to be called
map_fields(); fields();
} }
catch(...) catch(...)
{ {
@ -1030,7 +1030,7 @@ void Model::field_model_left_join(const wchar_t * db_field_name, Model & field_m
if( field_type.is_foreign_key() ) if( field_type.is_foreign_key() )
{ {
field_model.map_fields(); field_model.fields();
join_tables_str << " ON "; join_tables_str << " ON ";
db_expression->table_with_index_and_field_to_stream(join_tables_str, model_env->table_name, model_env->table_index, db_field_name, field_type); db_expression->table_with_index_and_field_to_stream(join_tables_str, model_env->table_name, model_env->table_index, db_field_name, field_type);
@ -1048,7 +1048,7 @@ void Model::field_model_left_join(const wchar_t * db_field_name, Model & field_m
else else
{ {
ModelEnv * old_model_env = field_model.model_env; ModelEnv * old_model_env = field_model.model_env;
map_fields(); // map_fields() will set field_model.model_env to null fields(); // fields() will set field_model.model_env to null
field_model.model_env = old_model_env; field_model.model_env = old_model_env;
join_tables_str << " ON "; join_tables_str << " ON ";
@ -1092,7 +1092,7 @@ void Model::field_model_save_key(const wchar_t * db_field_name)
int old_work_mode = model_env->model_work_mode; int old_work_mode = model_env->model_work_mode;
model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES;
model_env->field_index = 0; model_env->field_index = 0;
map_fields(); fields();
model_env->model_work_mode = old_work_mode; model_env->model_work_mode = old_work_mode;
if( model_env->field_value_helper_tab->empty() && plog ) if( model_env->field_value_helper_tab->empty() && plog )
@ -1131,9 +1131,9 @@ void Model::field_model_set_parent_key_in_child(const wchar_t * db_field_name, M
model_env_local.field_value_helper_tab = &helper_tab; model_env_local.field_value_helper_tab = &helper_tab;
model_env_local.field_index = 0; model_env_local.field_index = 0;
field_model.model_env = &model_env_local; field_model.model_env = &model_env_local;
field_model.prepare_table(); field_model.table();
field_model.map_fields(); field_model.fields();
if( (size_t)field_model.model_env->field_index != helper_tab.size() && log ) if( (size_t)field_model.model_env->field_index != helper_tab.size() && log )
{ {
@ -1268,7 +1268,7 @@ void Model::field_model_generate_db_sql(const wchar_t * db_field_name, Model & f
if( field_type.is_insertable() ) if( field_type.is_insertable() )
{ {
db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY); db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY);
field_model.map_fields(); field_model.fields();
db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_INSERT); db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_INSERT);
} }
} }
@ -1283,7 +1283,7 @@ void Model::field_model_generate_db_sql(const wchar_t * db_field_name, Model & f
db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY); db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY);
field_model.model_env->field_index = 0; field_model.model_env->field_index = 0;
field_model.model_env->set_field_name_helper = &key_fields; field_model.model_env->set_field_name_helper = &key_fields;
field_model.map_fields(); field_model.fields();
db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_UPDATE); db_expression->set_output_type(MORM_OUTPUT_TYPE_DB_UPDATE);
if( (size_t)field_model.model_env->field_index != key_fields.size() ) if( (size_t)field_model.model_env->field_index != key_fields.size() )
@ -1301,7 +1301,7 @@ void Model::field_model_generate_db_sql(const wchar_t * db_field_name, Model & f
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_INSERT && db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_INSERT &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_UPDATE ) db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_UPDATE )
{ {
field_model.map_fields(); field_model.fields();
} }
field_model.model_env->model_work_mode = MORM_MODEL_WORK_MODE_NONE; field_model.model_env->model_work_mode = MORM_MODEL_WORK_MODE_NONE;
@ -1363,7 +1363,7 @@ void Model::field_model(const wchar_t * db_field_name, const wchar_t * flat_fiel
if( !is_empty_field(db_field_name) ) if( !is_empty_field(db_field_name) )
{ {
field_model.prepare_table(); field_model.table();
if( field_type.is_foreign_key() || field_type.is_foreign_key_in_child() ) if( field_type.is_foreign_key() || field_type.is_foreign_key_in_child() )
{ {
@ -1386,7 +1386,7 @@ void Model::field_model(const wchar_t * db_field_name, const wchar_t * flat_fiel
{ {
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 )
{ {
// calling field_model.prepare_table(); is not needed in generating strings (at least for json/space formats) // calling field_model.table() is not needed in generating strings (at least for json/space formats)
field_model_generate_flat_string(flat_field_name, field_model, field_type); field_model_generate_flat_string(flat_field_name, field_model, field_type);
} }
} }
@ -1445,7 +1445,7 @@ void Model::set_parent_key_in_childs()
if( model_env ) if( model_env )
{ {
model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_PARENT_ID; model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_PARENT_ID;
map_fields(); fields();
} }
} }

View File

@ -86,20 +86,6 @@ public:
void set_connector(ModelConnector * connector); void set_connector(ModelConnector * connector);
ModelConnector * get_connector(); ModelConnector * get_connector();
/*
* map fields to names
*
* IMPROVEME rename me to fields() and make protected
*/
virtual void map_fields() = 0;
/*
* IMPROVEME make me protected
*/
virtual void prepare_table();
virtual void table(const wchar_t * table_name);
virtual void table(const wchar_t * schema_name, const wchar_t * table_name);
virtual void to_text(PT::TextStream & stream, ModelData * model_data, bool clear_stream = true, bool dump_mode = false); virtual void to_text(PT::TextStream & stream, ModelData * model_data, bool clear_stream = true, bool dump_mode = false);
virtual void to_text(PT::TextStream & stream, ModelData & model_data, bool clear_stream = true, bool dump_mode = false); virtual void to_text(PT::TextStream & stream, ModelData & model_data, bool clear_stream = true, bool dump_mode = false);
virtual void to_text(PT::TextStream & stream, bool clear_stream = true, bool dump_mode = false); virtual void to_text(PT::TextStream & stream, bool clear_stream = true, bool dump_mode = false);
@ -145,7 +131,7 @@ public:
model_env = &model_env_local; model_env = &model_env_local;
model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_FIELD_VALUE; model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_FIELD_VALUE;
model_env->field_index = 0; model_env->field_index = 0;
prepare_table(); // CHECK ME it is needed to set table name? table(); // CHECK ME it is needed to set table name?
FieldValueHelper field_value_helper; FieldValueHelper field_value_helper;
field_value_helper.db_field_name = db_field_name; field_value_helper.db_field_name = db_field_name;
@ -157,7 +143,7 @@ public:
helper_tab.push_back(field_value_helper); helper_tab.push_back(field_value_helper);
model_env->field_value_helper_tab = &helper_tab; model_env->field_value_helper_tab = &helper_tab;
map_fields(); fields();
if( !helper_tab.back().found && model_connector ) if( !helper_tab.back().found && model_connector )
{ {
@ -189,6 +175,15 @@ protected:
Model(const Model & m); Model(const Model & m);
virtual ~Model(); virtual ~Model();
/*
* the main method of mapping between fields and database resultsets
*/
virtual void fields() = 0;
virtual void table();
virtual void table_name(const wchar_t * table_name);
virtual void table_name(const wchar_t * schema_name, const wchar_t * table_name);
virtual void before_select(); virtual void before_select();
virtual void before_insert(); virtual void before_insert();
virtual void before_update(); virtual void before_update();
@ -683,7 +678,7 @@ protected:
child_model.model_env = &model_env_local; child_model.model_env = &model_env_local;
child_model.model_env->has_primary_key_set = child_model.has_primary_key_set; child_model.model_env->has_primary_key_set = child_model.has_primary_key_set;
child_model.set_connector(model_connector); child_model.set_connector(model_connector);
child_model.prepare_table(); child_model.table();
if( model_env->model_work_submode == MORM_MODEL_WORK_SUBMODE_INSERT ) if( model_env->model_work_submode == MORM_MODEL_WORK_SUBMODE_INSERT )
{ {