winix_fullmorm #4
|
@ -173,9 +173,16 @@ void BaseExpression::field_after()
|
|||
void BaseExpression::put_field_name_and_table_if_needed(const wchar_t * field_name, const FT & field_type, ModelEnv * model_env)
|
||||
{
|
||||
if( use_prefix && model_env )
|
||||
{
|
||||
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
|
||||
{
|
||||
put_field_name(field_name, field_type, model_env);
|
||||
|
|
273
src/finder.h
273
src/finder.h
|
@ -341,7 +341,6 @@ public:
|
|||
|
||||
|
||||
|
||||
|
||||
template<typename FieldValue>
|
||||
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>
|
||||
Finder<ModelClass> & neq(const wchar_t * field_name, const FieldValue & field_value)
|
||||
{
|
||||
|
@ -367,6 +392,33 @@ public:
|
|||
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>
|
||||
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>
|
||||
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>
|
||||
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>
|
||||
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>
|
||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::set<FieldValue> & container)
|
||||
|
@ -432,6 +591,33 @@ public:
|
|||
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>
|
||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::list<FieldValue> & container)
|
||||
{
|
||||
|
@ -444,6 +630,33 @@ public:
|
|||
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>
|
||||
Finder<ModelClass> & in(const wchar_t * field_name, const std::vector<FieldValue> & container)
|
||||
{
|
||||
|
@ -456,6 +669,35 @@ public:
|
|||
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)
|
||||
{
|
||||
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 table_name;
|
||||
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;
|
||||
bool was_primary_key_read;
|
||||
bool has_primary_key_set;
|
||||
|
||||
|
||||
std::vector<const wchar_t *> * set_field_name_helper;
|
||||
std::vector<FieldValueHelper> * field_value_helper_tab;
|
||||
|
||||
|
@ -87,6 +97,7 @@ public:
|
|||
copy_global_objects(e);
|
||||
|
||||
table_index = e.table_index;
|
||||
table2_index = e.table2_index;
|
||||
set_field_name_helper = e.set_field_name_helper;
|
||||
field_value_helper_tab = e.field_value_helper_tab;
|
||||
field_index = e.field_index;
|
||||
|
@ -94,6 +105,7 @@ public:
|
|||
has_primary_key_set = e.has_primary_key_set;
|
||||
|
||||
// schema_name and table_name don't have to be copied
|
||||
table2_name = nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -119,7 +131,9 @@ public:
|
|||
dump_mode = false;
|
||||
schema_name.clear();
|
||||
table_name.clear();
|
||||
table2_name = nullptr;
|
||||
table_index = 0;
|
||||
table2_index = 0;
|
||||
set_field_name_helper = nullptr;
|
||||
field_value_helper_tab = nullptr;
|
||||
field_index = 0;
|
||||
|
|
Loading…
Reference in New Issue