added BaseExpression::is_long_field_name()

added BaseExpression::need_to_add_field_prefix()
      now the fields() methods don't take add_column_prefix parameter
      but the field_name (wchar_t*) is tested whether is it a long (with a period) or short name
added BaseExpression::save_foreign_key() (code moved from field())
removed some default method arguments from BaseExpression
added neq() method for Finder
added DbExpression::prepare_short_table_name(const PT::TextStream & table_name, PT::TextStream & short_table_name)




git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1194 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2019-05-31 18:28:09 +00:00
parent a1d18735b0
commit b6fbe29805
13 changed files with 286 additions and 205 deletions

View File

@@ -95,7 +95,6 @@ public:
*
*/
virtual void table_name(PT::TextStream & stream);
virtual void table_name_for_join_as(PT::TextStream & stream);
virtual void to_text(PT::TextStream & stream, ModelData * model_data, bool clear_stream = true);
virtual void to_text(PT::TextStream & stream, ModelData & model_data, bool clear_stream = true);
@@ -131,8 +130,6 @@ public:
// set object to default values
virtual void clear();
// we need a pointer to ModelData here?
virtual void prepare_to_select();
protected:
@@ -649,7 +646,7 @@ protected:
if( flat_expression && !is_empty_field(flat_field_name) )
{
// insertable, updatable and is_primary_key are ignored here
flat_expression->field(flat_field_name, field_value, insertable, updatable, is_primary_key, true, model_env);
flat_expression->field(flat_field_name, field_value, insertable, updatable, is_primary_key, model_env);
}
}
}
@@ -664,7 +661,7 @@ protected:
if( db_expression && !is_empty_field(db_field_name) )
{
db_expression->field(db_field_name, field_value, insertable, updatable, is_primary_key, true, model_env);
db_expression->field(db_field_name, field_value, insertable, updatable, is_primary_key, model_env);
}
}
}
@@ -712,7 +709,7 @@ protected:
if( doc_expression && !is_empty_field(flat_field_name) )
{
// insertable, updatable and is_primary_key are ignored here
doc_expression->field_doc(*this, flat_field_name, field_value, insertable, updatable, is_primary_key);
doc_expression->field_doc(*this, flat_field_name, field_value, insertable, updatable, is_primary_key, model_env);
}
}
}
@@ -724,14 +721,14 @@ protected:
{
if( model_env && field_model.model_env && model_env->finder_helper )
{
model_env->finder_helper->morm_foreign_keys.clear();
field_model.model_env->table_index = model_env->finder_helper->add_join_table(field_model.model_env->table_name_simple);
model_env->finder_helper->foreign_keys.clear();
field_model.model_env->table_index = model_env->finder_helper->add_join_table(field_model.model_env->table_name_short);
model_env->finder_helper->morm_finder_join_tables << "LEFT JOIN " << field_model.model_env->table_name
<< " AS " << field_model.model_env->table_name_simple;
model_env->finder_helper->join_tables_str << "LEFT JOIN " << field_model.model_env->table_name
<< " AS " << field_model.model_env->table_name_short;
if( field_model.model_env->table_index > 1 )
model_env->finder_helper->morm_finder_join_tables << field_model.model_env->table_index;
model_env->finder_helper->join_tables_str << field_model.model_env->table_index;
int expr_work_mode = db_expression->get_work_mode();
int expr_output_type = db_expression->get_output_type();
@@ -745,29 +742,29 @@ protected:
{
field_model.map_fields();
model_env->finder_helper->morm_finder_join_tables << " ON " << model_env->table_name_simple << '.'
<< db_field_name << " = " << field_model.model_env->table_name_simple << '.';
model_env->finder_helper->join_tables_str << " ON " << model_env->table_name_short << '.'
<< db_field_name << " = " << field_model.model_env->table_name_short << '.';
if( model_env->finder_helper->morm_foreign_keys.size() == 1 )
if( model_env->finder_helper->foreign_keys.size() == 1 )
{
model_env->finder_helper->morm_finder_join_tables << model_env->finder_helper->morm_foreign_keys.front();
model_env->finder_helper->join_tables_str << model_env->finder_helper->foreign_keys.front();
}
}
else
{
map_fields();
model_env->finder_helper->morm_finder_join_tables << " ON " << model_env->table_name_simple << '.';
model_env->finder_helper->join_tables_str << " ON " << model_env->table_name_short << '.';
if( model_env->finder_helper->morm_foreign_keys.size() == 1 )
if( model_env->finder_helper->foreign_keys.size() == 1 )
{
model_env->finder_helper->morm_finder_join_tables << model_env->finder_helper->morm_foreign_keys.front();
model_env->finder_helper->join_tables_str << model_env->finder_helper->foreign_keys.front();
}
model_env->finder_helper->morm_finder_join_tables << " = " << field_model.model_env->table_name_simple << '.' << db_field_name;
model_env->finder_helper->join_tables_str << " = " << field_model.model_env->table_name_short << '.' << db_field_name;
}
model_env->finder_helper->morm_finder_join_tables << ' ';
model_env->finder_helper->join_tables_str << ' ';
db_expression->set_work_mode(expr_work_mode);
db_expression->set_output_type(expr_output_type);
@@ -777,7 +774,7 @@ protected:
void field_model_generate_flat_string(const wchar_t * db_field_name, const wchar_t * flat_field_name, Model & field_model, bool insertable, bool updatable, bool has_foreign_key)
void field_model_generate_flat_string(const wchar_t * db_field_name, const wchar_t * flat_field_name, Model & field_model, bool insertable, bool updatable)
{
FlatConnector * flat_connector = model_connector->get_flat_connector();
@@ -788,7 +785,7 @@ protected:
if( flat_expression && !is_empty_field(flat_field_name) )
{
field_model.model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING;
flat_expression->field_model(flat_field_name, field_model, insertable, updatable, false);
flat_expression->field_model(flat_field_name, field_model, insertable, updatable, false, model_env);
}
}
}
@@ -807,7 +804,7 @@ protected:
field_model.model_env->model_connector_mode = MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL;
field_model.table_name(field_model.model_env->table_name);
field_model.table_name_for_join_as(field_model.model_env->table_name_simple);
db_expression->prepare_short_table_name(field_model.model_env->table_name, field_model.model_env->table_name_short);
if( db_expression->get_output_type() == MORM_OUTPUT_TYPE_SELECT_COLUMNS )
{
@@ -848,7 +845,7 @@ protected:
if( doc_expression && !is_empty_field(flat_field_name) )
{
// insertable, updatable and is_primary_key are ignored here
doc_expression->field_doc(*this, flat_field_name, field_model, insertable, updatable, false);
doc_expression->field_doc(*this, flat_field_name, field_model, insertable, updatable, false, model_env);
}
}
}
@@ -885,7 +882,7 @@ protected:
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING )
{
field_model_generate_flat_string(db_field_name, flat_field_name, field_model, insertable, updatable, has_foreign_key);
field_model_generate_flat_string(db_field_name, flat_field_name, field_model, insertable, updatable);
}
if( model_env->model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_DB_SQL )
@@ -976,7 +973,7 @@ protected:
if( doc_expression && !is_empty_field(flat_field_name) )
{
// insertable, updatable and is_primary_key are ignored here
doc_expression->field_doc(*this, flat_field_name, field_container, insertable, updatable, false, model_env->model_data);
doc_expression->field_doc(*this, flat_field_name, field_container, insertable, updatable, false, model_env);
}
}
}