added Cursor class

git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1140 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2018-11-14 17:14:26 +00:00
parent 011d8f96e8
commit 1f9e4ee70a
16 changed files with 1108 additions and 802 deletions

View File

@@ -41,6 +41,7 @@
#include "modelconnector.h"
#include "dbexpression.h"
#include "flatexpression.h"
#include "queryresult.h"
@@ -92,10 +93,6 @@ public:
virtual bool found();
virtual bool was_db_error();
virtual std::wstring get_db_error();
void set_connector(ModelConnector & connector);
void set_connector(ModelConnector * connector);
@@ -155,8 +152,11 @@ protected:
ModelData * model_data;
const void * doc_field_pointer;
int model_connector_mode;
QueryResult * query_result;
Model();
Model(const Model & m);
virtual ~Model();
virtual void before_select();
@@ -176,8 +176,8 @@ protected:
virtual int get_connector_mode();
// used by Finder
virtual void map_values_from_query();
// used by Cursor
virtual void map_values_from_query(QueryResult * query_result);
/////////////////////////////////
@@ -684,7 +684,7 @@ protected:
if( db_connector )
{
if( !is_empty_field(db_field_name) )
db_connector->get_value_by_field_name(db_field_name, field_value);
get_value_by_field_name(db_field_name, field_value);
}
}
@@ -825,6 +825,27 @@ protected:
}
}
template<typename FieldValue>
void get_value_by_field_name(const wchar_t * field_name, FieldValue & field_value)
{
if( query_result )
{
const char * val_str = query_result->get_field_string_value(field_name);
if( val_str )
{
DbConnector * db_connector = model_connector->get_db_connector();
if( db_connector )
{
db_connector->get_value(val_str, field_value);
}
}
}
}
////
template<typename FieldValue>
void doc_field_generic(const wchar_t * db_field_name, const wchar_t * flat_field_name, FieldValue & field_value)
@@ -966,7 +987,8 @@ protected:
virtual bool is_empty_field(const wchar_t * value);
template<typename ModelClass> friend class Finder;
// template<typename ModelClass> friend class Finder;
template<typename ModelClass> friend class Cursor;
friend class BaseExpression;
};