some work in morm

- support for fetching rows from db
- support for inserting/updating rows



git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1081 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2018-04-16 22:46:25 +00:00
parent 09f31b2803
commit 72b2622d08
17 changed files with 965 additions and 319 deletions

View File

@@ -35,7 +35,7 @@
#ifndef headerfile_morm_baseexpression
#define headerfile_morm_baseexpression
#include <list>
#include "textstream/textstream.h"
#include "morm_types.h"
#include "date/date.h"
@@ -86,6 +86,34 @@ public:
}
template<typename ModelClass>
void field_list(const wchar_t * field_name, const std::list<ModelClass> & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
{
if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) )
{
field_before();
// if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
// {
// put_field_name(field_name);
// }
// else
// if( work_mode == MORM_WORK_MODE_MODEL_VALUES )
// {
// put_field_value(field_value);
// }
// else
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES )
{
put_field_name(field_name);
put_name_value_separator();
put_field_value_list(field_value);
}
field_after();
}
}
template<typename FieldValue>
void field(PT::TextStream & stream, const wchar_t * field_name, const FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
{
@@ -144,6 +172,8 @@ protected:
// generate_from_model();
// }
virtual void generate_from_model(Model & model);
virtual void before_generate_from_model();
virtual void after_generate_from_model();
virtual bool can_field_be_generated(bool insertable, bool updatable, bool is_primary_key);
@@ -162,6 +192,38 @@ protected:
after_field_value(field_value);
}
template<typename ModelClass>
void put_field_value_list(const std::list<ModelClass> & field_value)
{
if( out_stream )
{
(*out_stream) << "[";// make a virtual method
}
bool is_first = true;
for(ModelClass m : field_value)
{
if( out_stream )
{
if( !is_first )
{
if( out_stream )
(*out_stream) << ","; // make a virtual method
}
//before_field_value(field_value);
generate_from_model(m);
//after_field_value(field_value);
is_first = false;
}
}
if( out_stream )
{
(*out_stream) << "]";// make a virtual method
}
}
virtual void before_field_name();
virtual void after_field_name();
@@ -178,6 +240,9 @@ protected:
virtual void before_field_value(const char *);
virtual void after_field_value(const char *);
virtual void before_field_value(const PT::Date &);
virtual void after_field_value(const PT::Date &);
template<typename FieldValue>
void before_field_value(const FieldValue &)