fixed: get_value_by_field_name() is able to correctly take values when

we do not use auto generated 'select' and when we are using prefixes for columns



git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1209 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2019-09-17 17:55:39 +00:00
parent 057d879b4c
commit afce2234c3
12 changed files with 200 additions and 63 deletions

View File

@@ -61,6 +61,7 @@ public:
model_connector = c.model_connector;
model_data = c.model_data;
has_autogenerated_select = c.has_autogenerated_select;
use_table_prefix_for_fetching = c.use_table_prefix_for_fetching;
query_result = c.query_result;
select_status = c.select_status;
@@ -71,6 +72,7 @@ public:
// helper doesn't have to be copied
cursor_helper.clear();
finder_helper.clear();
}
@@ -99,10 +101,11 @@ public:
model_connector = nullptr;
model_data = nullptr;
has_autogenerated_select = false;
use_table_prefix_for_fetching = false;
cursor_helper.clear();
finder_helper.clear();
query_result = nullptr;
select_status = false;
}
@@ -136,6 +139,12 @@ public:
}
virtual void use_table_prefix(bool use_table_prefix_for_fetching)
{
this->use_table_prefix_for_fetching = use_table_prefix_for_fetching;
}
virtual QueryResult * get_query_result()
{
return query_result;
@@ -171,14 +180,22 @@ public:
ModelEnv model_env_local;
result.model_env = &model_env_local;
result.model_env->cursor_helper = &cursor_helper;
result.model_env->finder_helper = &finder_helper;
try
{
finder_helper.clear(); // at the moment used only for calculating table prefixes (indices)
cursor_helper.clear();
cursor_helper.query_result = query_result;
cursor_helper.has_autogenerated_select = has_autogenerated_select;
cursor_helper.use_table_prefix_for_fetching_values = use_table_prefix_for_fetching;
result.model_env->model_data = model_data;
if( !cursor_helper.has_autogenerated_select && cursor_helper.use_table_prefix_for_fetching_values )
{
result.prepare_table_names();
}
result.before_select();
res = select_status;
@@ -285,7 +302,9 @@ protected:
ModelConnector * model_connector;
ModelData * model_data;
bool has_autogenerated_select;
bool use_table_prefix_for_fetching;
CursorHelper cursor_helper;
FinderHelper finder_helper; // may CursorHelper and FinderHelper should be one class?
QueryResult * query_result;
bool select_status;
@@ -306,17 +325,27 @@ protected:
try
{
finder_helper.clear();
cursor_helper.clear();
cursor_helper.query_result = query_result;
cursor_helper.has_autogenerated_select = has_autogenerated_select;
cursor_helper.use_table_prefix_for_fetching_values = use_table_prefix_for_fetching;
added_model.set_connector(model_connector);
added_model.clear();
added_model.model_env = &model_env_local;
added_model.model_env->cursor_helper = &cursor_helper;
added_model.model_env->finder_helper = &finder_helper;
added_model.set_save_mode(Model::DO_UPDATE_ON_SAVE); // IMPROVE ME check if there is a primary key
added_model.model_env->model_data = model_data;
if( !cursor_helper.has_autogenerated_select && cursor_helper.use_table_prefix_for_fetching_values )
{
added_model.prepare_table_names();
}
added_model.before_select();
added_model.map_values_from_query();
added_model.after_select();