diff --git a/src/baseexpression.cpp b/src/baseexpression.cpp index 2e2ff62..ff0bc39 100644 --- a/src/baseexpression.cpp +++ b/src/baseexpression.cpp @@ -121,7 +121,7 @@ void BaseExpression::generate_from_model(Model & model) { before_generate_from_model(); dump_additional_info(model); - model.map_fields(); + model.fields(); after_generate_from_model(); } } diff --git a/src/finder.h b/src/finder.h index 2ccfc9e..7f69477 100644 --- a/src/finder.h +++ b/src/finder.h @@ -181,7 +181,7 @@ public: model.model_env = &model_env; model.model_env->model_data = model_data; model.model_env->finder_helper = &finder_helper; - model.prepare_table(); + model.table(); model.model_env->add_table_name_to_finder_helper(); return *this; diff --git a/src/model.cpp b/src/model.cpp index 6bca2d6..01fc531 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -127,7 +127,7 @@ ModelConnector * Model::get_connector() } -void Model::prepare_table() +void Model::table() { if( model_connector ) { @@ -135,12 +135,12 @@ void Model::prepare_table() 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 ) { @@ -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 ) { @@ -200,7 +200,7 @@ void Model::to_text(PT::TextStream & stream, ModelData * model_data, bool clear_ { 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); } catch(...) @@ -288,7 +288,7 @@ void Model::generate_insert_query(PT::TextStream & stream, ModelData * model_dat { try { - prepare_table(); + table(); db_connector->generate_insert_query(stream, *this); } catch(...) @@ -325,7 +325,7 @@ bool Model::insert(ModelData * model_data, bool insert_whole_tree) try { - prepare_table(); + table(); status = insert_tree(insert_whole_tree); } 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_submode = MORM_MODEL_WORK_SUBMODE_INSERT; - map_fields(); + fields(); } 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_submode = MORM_MODEL_WORK_SUBMODE_INSERT; - map_fields(); + fields(); } return result; @@ -420,7 +420,7 @@ void Model::generate_update_query(PT::TextStream & stream, ModelData * model_dat if( db_connector ) { - prepare_table(); + table(); db_connector->generate_update_query(stream, *this); } } @@ -452,7 +452,7 @@ bool Model::update(ModelData * model_data, bool update_whole_tree) try { - prepare_table(); + table(); status = update_tree(update_whole_tree); } 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_submode = MORM_MODEL_WORK_SUBMODE_UPDATE; - map_fields(); + fields(); } 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_submode = MORM_MODEL_WORK_SUBMODE_UPDATE; - map_fields(); + fields(); } return result; @@ -531,7 +531,7 @@ void Model::generate_remove_query(PT::TextStream & stream, ModelData * model_dat if( db_connector ) { - prepare_table(); + table(); db_connector->generate_remove_query(stream, *this); } } @@ -564,7 +564,7 @@ bool Model::remove(ModelData * model_data, bool remove_whole_tree) try { - prepare_table(); + table(); status = remove_tree(remove_whole_tree); } 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_submode = MORM_MODEL_WORK_SUBMODE_REMOVE; - map_fields(); + fields(); } 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_submode = MORM_MODEL_WORK_SUBMODE_REMOVE; - map_fields(); + fields(); } return result; @@ -660,7 +660,7 @@ bool Model::save(ModelData * model_data, bool save_whole_tree) try { - prepare_table(); + table(); status = save_tree(save_whole_tree); } 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_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 @@ -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_submode = MORM_MODEL_WORK_SUBMODE_SAVE; - map_fields(); + fields(); } 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->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 - map_fields(); + fields(); model_env->model_work_mode = MORM_MODEL_WORK_MODE_NONE; if( model_env->was_primary_key_read && model_env->has_primary_key_set ) @@ -781,8 +781,8 @@ void Model::clear() try { - // prepare_table() doesn't have to be called - map_fields(); + // table() doesn't have to be called + fields(); } 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() ) { - field_model.map_fields(); + field_model.fields(); 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); @@ -1048,7 +1048,7 @@ void Model::field_model_left_join(const wchar_t * db_field_name, Model & field_m else { 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; 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; model_env->model_work_mode = MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES; model_env->field_index = 0; - map_fields(); + fields(); model_env->model_work_mode = old_work_mode; 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_index = 0; 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 ) { @@ -1268,7 +1268,7 @@ void Model::field_model_generate_db_sql(const wchar_t * db_field_name, Model & f if( field_type.is_insertable() ) { 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); } } @@ -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); field_model.model_env->field_index = 0; 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); 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_UPDATE ) { - field_model.map_fields(); + field_model.fields(); } 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) ) { - field_model.prepare_table(); + field_model.table(); 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 ) { - // 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); } } @@ -1445,7 +1445,7 @@ void Model::set_parent_key_in_childs() if( model_env ) { model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_PARENT_ID; - map_fields(); + fields(); } } diff --git a/src/model.h b/src/model.h index 9a5dadd..7b96376 100644 --- a/src/model.h +++ b/src/model.h @@ -86,20 +86,6 @@ public: void set_connector(ModelConnector * 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, bool clear_stream = true, bool dump_mode = false); @@ -145,7 +131,7 @@ public: model_env = &model_env_local; model_env->model_work_mode = MORM_MODEL_WORK_MODE_SET_FIELD_VALUE; 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; field_value_helper.db_field_name = db_field_name; @@ -157,7 +143,7 @@ public: helper_tab.push_back(field_value_helper); model_env->field_value_helper_tab = &helper_tab; - map_fields(); + fields(); if( !helper_tab.back().found && model_connector ) { @@ -189,6 +175,15 @@ protected: Model(const Model & m); 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_insert(); virtual void before_update(); @@ -683,7 +678,7 @@ protected: child_model.model_env = &model_env_local; child_model.model_env->has_primary_key_set = child_model.has_primary_key_set; child_model.set_connector(model_connector); - child_model.prepare_table(); + child_model.table(); if( model_env->model_work_submode == MORM_MODEL_WORK_SUBMODE_INSERT ) {