winix_fullmorm #4
|
@ -174,7 +174,14 @@ void BaseExpression::put_field_name_and_table_if_needed(const wchar_t * field_na
|
||||||
{
|
{
|
||||||
if( use_prefix && model_env )
|
if( use_prefix && model_env )
|
||||||
{
|
{
|
||||||
put_table_with_index_and_field(model_env->table_name, model_env->table_index, field_name, field_type);
|
if( !is_empty_field(model_env->table2_name) )
|
||||||
|
{
|
||||||
|
put_table_with_index_and_field(model_env->table2_name, model_env->table2_index, field_name, field_type);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
put_table_with_index_and_field(model_env->table_name, model_env->table_index, field_name, field_type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
273
src/finder.h
273
src/finder.h
|
@ -341,7 +341,6 @@ public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & eq(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & eq(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -355,6 +354,32 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & eq(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_EQ);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & eq(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_EQ);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & neq(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & neq(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -367,6 +392,33 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & neq(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_NOT_EQ);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & neq(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_NOT_EQ);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & lt(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & lt(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -380,6 +432,32 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & lt(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_LT);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & lt(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_LT);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & gt(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & gt(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -393,6 +471,32 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & gt(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_GT);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & gt(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_GT);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & le(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & le(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -406,6 +510,34 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & le(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_LE);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & le(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_LE);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & ge(const wchar_t * field_name, const FieldValue & field_value)
|
Finder<ModelClass> & ge(const wchar_t * field_name, const FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@ -419,6 +551,33 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & ge(const wchar_t * table_name, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_GE);
|
||||||
|
field_to_stream(table_name, 1, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & ge(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_GE);
|
||||||
|
field_to_stream(table_name, table_index, field_name, field_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::set<FieldValue> & container)
|
Finder<ModelClass> & in(const wchar_t * field_name, const std::set<FieldValue> & container)
|
||||||
|
@ -432,6 +591,33 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, const wchar_t * field_name, const std::set<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, 1, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, int table_index, const wchar_t * field_name, const std::set<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, table_index, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::list<FieldValue> & container)
|
Finder<ModelClass> & in(const wchar_t * field_name, const std::list<FieldValue> & container)
|
||||||
{
|
{
|
||||||
|
@ -444,6 +630,33 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, const wchar_t * field_name, const std::list<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, 1, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, int table_index, const wchar_t * field_name, const std::list<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, table_index, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::vector<FieldValue> & container)
|
Finder<ModelClass> & in(const wchar_t * field_name, const std::vector<FieldValue> & container)
|
||||||
{
|
{
|
||||||
|
@ -456,6 +669,35 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, const wchar_t * field_name, const std::vector<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, 1, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
Finder<ModelClass> & in(const wchar_t * table_name, int table_index, const wchar_t * field_name, const std::vector<FieldValue> & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
db_expression->set_output_type(MORM_OUTPUT_TYPE_WHERE_IN);
|
||||||
|
field_in(table_name, table_index, field_name, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Finder<ModelClass> & page(size_t page_number, size_t page_size)
|
Finder<ModelClass> & page(size_t page_number, size_t page_size)
|
||||||
{
|
{
|
||||||
if( out_stream && db_expression )
|
if( out_stream && db_expression )
|
||||||
|
@ -640,6 +882,35 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename FieldValue>
|
||||||
|
void field_to_stream(const wchar_t * table_name, int table_index, const wchar_t * field_name, const FieldValue & field_value)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
model_env.table2_name = table_name;
|
||||||
|
model_env.table2_index = table_index;
|
||||||
|
|
||||||
|
db_expression->field_to_stream(*out_stream, field_name, field_value, FT::default_type, &model_env);
|
||||||
|
|
||||||
|
model_env.table2_name = nullptr;
|
||||||
|
model_env.table2_index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Container>
|
||||||
|
void field_in(const wchar_t * table_name, int table_index, const wchar_t * field_name, const Container & container)
|
||||||
|
{
|
||||||
|
if( db_expression )
|
||||||
|
{
|
||||||
|
model_env.table2_name = table_name;
|
||||||
|
model_env.table2_index = table_index;
|
||||||
|
|
||||||
|
db_expression->field_in(*out_stream, field_name, container, &model_env);
|
||||||
|
|
||||||
|
model_env.table2_name = nullptr;
|
||||||
|
model_env.table2_index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,10 +64,20 @@ public:
|
||||||
PT::WTextStream schema_name;
|
PT::WTextStream schema_name;
|
||||||
PT::WTextStream table_name;
|
PT::WTextStream table_name;
|
||||||
int table_index;
|
int table_index;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* optional additional table name
|
||||||
|
* used in eq(), neq(), ... methods in Finder
|
||||||
|
*/
|
||||||
|
const wchar_t * table2_name;
|
||||||
|
int table2_index;
|
||||||
|
|
||||||
|
|
||||||
int field_index;
|
int field_index;
|
||||||
bool was_primary_key_read;
|
bool was_primary_key_read;
|
||||||
bool has_primary_key_set;
|
bool has_primary_key_set;
|
||||||
|
|
||||||
|
|
||||||
std::vector<const wchar_t *> * set_field_name_helper;
|
std::vector<const wchar_t *> * set_field_name_helper;
|
||||||
std::vector<FieldValueHelper> * field_value_helper_tab;
|
std::vector<FieldValueHelper> * field_value_helper_tab;
|
||||||
|
|
||||||
|
@ -87,6 +97,7 @@ public:
|
||||||
copy_global_objects(e);
|
copy_global_objects(e);
|
||||||
|
|
||||||
table_index = e.table_index;
|
table_index = e.table_index;
|
||||||
|
table2_index = e.table2_index;
|
||||||
set_field_name_helper = e.set_field_name_helper;
|
set_field_name_helper = e.set_field_name_helper;
|
||||||
field_value_helper_tab = e.field_value_helper_tab;
|
field_value_helper_tab = e.field_value_helper_tab;
|
||||||
field_index = e.field_index;
|
field_index = e.field_index;
|
||||||
|
@ -94,6 +105,7 @@ public:
|
||||||
has_primary_key_set = e.has_primary_key_set;
|
has_primary_key_set = e.has_primary_key_set;
|
||||||
|
|
||||||
// schema_name and table_name don't have to be copied
|
// schema_name and table_name don't have to be copied
|
||||||
|
table2_name = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,7 +131,9 @@ public:
|
||||||
dump_mode = false;
|
dump_mode = false;
|
||||||
schema_name.clear();
|
schema_name.clear();
|
||||||
table_name.clear();
|
table_name.clear();
|
||||||
|
table2_name = nullptr;
|
||||||
table_index = 0;
|
table_index = 0;
|
||||||
|
table2_index = 0;
|
||||||
set_field_name_helper = nullptr;
|
set_field_name_helper = nullptr;
|
||||||
field_value_helper_tab = nullptr;
|
field_value_helper_tab = nullptr;
|
||||||
field_index = 0;
|
field_index = 0;
|
||||||
|
|
Loading…
Reference in New Issue