fixed: generating a correct table names with indices for JOIN statements and column prefixes

git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1188 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2019-03-31 20:21:12 +00:00
parent ab54a3fc3e
commit 6d9b9045fe
7 changed files with 121 additions and 84 deletions

View File

@@ -62,12 +62,17 @@ public:
virtual void prepare_to_new_expression();
virtual void set_column_prefix(const std::string & prefix);
virtual void set_column_prefix(const std::string & prefix, int index);
virtual std::string get_column_prefix();
virtual int get_column_prefix_index();
virtual void generate_from_model(PT::TextStream & stream, Model & model);
virtual PT::TextStream * get_current_stream();
// rename me
virtual void allow_to_use_prefix(bool use_prefix);
// give me a better name
virtual void put_field_doc(Model & model, const void * field_pointer, bool insertable, bool updatable, bool is_primary_key, ModelData * model_data);
@@ -75,7 +80,7 @@ public:
template<typename FieldValue>
void field(int table_index, const wchar_t * field_name, const FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false, bool add_column_prefix = true, ModelData * model_data = nullptr)
void field(const wchar_t * field_name, const FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false, bool add_column_prefix = true, ModelData * model_data = nullptr)
{
if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) )
{
@@ -83,7 +88,7 @@ public:
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
{
put_field_name(table_index, field_name, add_column_prefix);
put_field_name(field_name, add_column_prefix);
}
else
if( work_mode == MORM_WORK_MODE_MODEL_SAVE_FIELDS )
@@ -92,7 +97,7 @@ public:
PT::TextStream * old_out_stream = out_stream;
out_stream = &str;
put_field_name(-1, field_name, add_column_prefix);
put_field_name(field_name, add_column_prefix);
out_stream = old_out_stream;
if( model_data )
@@ -110,7 +115,7 @@ public:
else
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES )
{
put_field_name(table_index, field_name);
put_field_name(field_name);
put_name_value_separator();
put_field_value(field_value);
}
@@ -230,7 +235,7 @@ public:
void field_to_stream(PT::TextStream & stream, const wchar_t * field_name, const FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
{
this->out_stream = &stream;
field(-1, field_name, field_value, insertable, updatable, is_primary_key);
field(field_name, field_value, insertable, updatable, is_primary_key);
this->out_stream = nullptr;
}
@@ -278,6 +283,8 @@ protected:
std::string column_prefix;
int column_prefix_index;
bool use_prefix;
virtual void generate_from_model(Model & model);
@@ -289,7 +296,6 @@ protected:
//void field(const wchar_t * field_name, Model & field, bool insertable = true, bool updatable = true);
virtual void put_field_name(int table_index, const wchar_t * field_name, bool add_column_prefix = true);
virtual void put_field_name(const wchar_t * field_name, bool add_column_prefix = true);
template<typename FieldValue>