some work in branches/join_models
added: ModelEnv class - now Model has a pointer to ModelEnv and ModelEnv has a pointer to ModelData, model_connector_mode, table_index and doc_field_pointer git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1191 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
32
src/cursor.h
32
src/cursor.h
@@ -144,18 +144,21 @@ public:
|
||||
result.set_connector(model_connector);
|
||||
result.clear();
|
||||
|
||||
if( model_connector && query_result && query_result->has_db_result() )
|
||||
if( model_connector && query_result && query_result->has_db_result() && model_data )
|
||||
{
|
||||
DbConnector * db_connector = model_connector->get_db_connector();
|
||||
|
||||
if( db_connector )
|
||||
{
|
||||
ModelEnv model_env_local;
|
||||
result.model_env = &model_env_local;
|
||||
|
||||
try
|
||||
{
|
||||
if( model_data )
|
||||
model_data->current_column = 0;
|
||||
model_data->current_column = 0;
|
||||
model_data->query_result = query_result;
|
||||
|
||||
result.model_data = model_data;
|
||||
result.model_env->model_data = model_data;
|
||||
result.before_select();
|
||||
res = select_status;
|
||||
|
||||
@@ -164,7 +167,7 @@ public:
|
||||
if( query_result->cur_row < query_result->result_rows )
|
||||
{
|
||||
result.set_save_mode(Model::DO_UPDATE_ON_SAVE); // IMPROVE ME check if there is a primary key
|
||||
result.map_values_from_query(query_result);
|
||||
result.map_values_from_query();
|
||||
result.after_select();
|
||||
query_result->cur_row += 1;
|
||||
}
|
||||
@@ -185,7 +188,7 @@ public:
|
||||
// throw something?
|
||||
}
|
||||
|
||||
result.model_data = nullptr;
|
||||
result.model_env = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +201,7 @@ public:
|
||||
ModelClass model;
|
||||
|
||||
get(model);
|
||||
return std::move(model);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
@@ -211,7 +214,7 @@ public:
|
||||
result.clear();
|
||||
}
|
||||
|
||||
if( model_connector && query_result && query_result->has_db_result() )
|
||||
if( model_connector && query_result && query_result->has_db_result() && model_data )
|
||||
{
|
||||
DbConnector * db_connector = model_connector->get_db_connector();
|
||||
|
||||
@@ -284,17 +287,20 @@ protected:
|
||||
result.emplace_back(); // it returns a reference from c++17
|
||||
ModelClass & added_model = result.back();
|
||||
|
||||
ModelEnv model_env_local;
|
||||
added_model.model_env = &model_env_local;
|
||||
|
||||
try
|
||||
{
|
||||
if( model_data )
|
||||
model_data->current_column = 0;
|
||||
model_data->current_column = 0;
|
||||
model_data->query_result = query_result;
|
||||
|
||||
added_model.set_connector(model_connector);
|
||||
added_model.clear();
|
||||
added_model.set_save_mode(Model::DO_UPDATE_ON_SAVE); // IMPROVE ME check if there is a primary key
|
||||
added_model.model_data = model_data;
|
||||
added_model.model_env->model_data = model_data;
|
||||
added_model.before_select();
|
||||
added_model.map_values_from_query(query_result);
|
||||
added_model.map_values_from_query();
|
||||
added_model.after_select();
|
||||
}
|
||||
catch(...)
|
||||
@@ -303,7 +309,7 @@ protected:
|
||||
// throw or something?
|
||||
}
|
||||
|
||||
added_model.model_data = nullptr;
|
||||
added_model.model_env = nullptr;
|
||||
}
|
||||
|
||||
return res;
|
||||
|
Reference in New Issue
Block a user