changed: ModelData moved outside Model
added: using ModelData in BaseExpression so Model::to_text() functions can use a ModelData object now git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1175 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
41684eb969
commit
cf0a0c96fe
|
@ -10,7 +10,7 @@ baseexpression.o: ../../pikotools/textstream/types.h morm_types.h model.h
|
||||||
baseexpression.o: modelconnector.h clearer.h dbconnector.h
|
baseexpression.o: modelconnector.h clearer.h dbconnector.h
|
||||||
baseexpression.o: ../../pikotools/log/log.h ../../pikotools/log/filelog.h
|
baseexpression.o: ../../pikotools/log/log.h ../../pikotools/log/filelog.h
|
||||||
baseexpression.o: queryresult.h flatconnector.h dbexpression.h
|
baseexpression.o: queryresult.h flatconnector.h dbexpression.h
|
||||||
baseexpression.o: flatexpression.h ../../pikotools/utf8/utf8.h
|
baseexpression.o: flatexpression.h modeldata.h ../../pikotools/utf8/utf8.h
|
||||||
clearer.o: clearer.h ../../pikotools/date/date.h
|
clearer.o: clearer.h ../../pikotools/date/date.h
|
||||||
clearer.o: ../../pikotools/convert/inttostr.h model.h
|
clearer.o: ../../pikotools/convert/inttostr.h model.h
|
||||||
clearer.o: ../../pikotools/textstream/textstream.h
|
clearer.o: ../../pikotools/textstream/textstream.h
|
||||||
|
@ -19,7 +19,7 @@ clearer.o: ../../pikotools/membuffer/membuffer.h
|
||||||
clearer.o: ../../pikotools/textstream/types.h modelconnector.h dbconnector.h
|
clearer.o: ../../pikotools/textstream/types.h modelconnector.h dbconnector.h
|
||||||
clearer.o: ../../pikotools/log/log.h ../../pikotools/log/filelog.h
|
clearer.o: ../../pikotools/log/log.h ../../pikotools/log/filelog.h
|
||||||
clearer.o: queryresult.h flatconnector.h dbexpression.h baseexpression.h
|
clearer.o: queryresult.h flatconnector.h dbexpression.h baseexpression.h
|
||||||
clearer.o: morm_types.h flatexpression.h
|
clearer.o: morm_types.h flatexpression.h modeldata.h
|
||||||
dbconnector.o: dbconnector.h ../../pikotools/textstream/textstream.h
|
dbconnector.o: dbconnector.h ../../pikotools/textstream/textstream.h
|
||||||
dbconnector.o: ../../pikotools/space/space.h
|
dbconnector.o: ../../pikotools/space/space.h
|
||||||
dbconnector.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
|
dbconnector.o: ../../pikotools/textstream/types.h ../../pikotools/date/date.h
|
||||||
|
@ -28,7 +28,7 @@ dbconnector.o: ../../pikotools/membuffer/membuffer.h
|
||||||
dbconnector.o: ../../pikotools/textstream/types.h ../../pikotools/log/log.h
|
dbconnector.o: ../../pikotools/textstream/types.h ../../pikotools/log/log.h
|
||||||
dbconnector.o: ../../pikotools/log/filelog.h queryresult.h dbexpression.h
|
dbconnector.o: ../../pikotools/log/filelog.h queryresult.h dbexpression.h
|
||||||
dbconnector.o: baseexpression.h morm_types.h model.h modelconnector.h
|
dbconnector.o: baseexpression.h morm_types.h model.h modelconnector.h
|
||||||
dbconnector.o: clearer.h flatconnector.h flatexpression.h
|
dbconnector.o: clearer.h flatconnector.h flatexpression.h modeldata.h
|
||||||
dbconnector.o: ../../pikotools/utf8/utf8.h ../../pikotools/convert/convert.h
|
dbconnector.o: ../../pikotools/utf8/utf8.h ../../pikotools/convert/convert.h
|
||||||
dbconnector.o: ../../pikotools/convert/inttostr.h
|
dbconnector.o: ../../pikotools/convert/inttostr.h
|
||||||
dbconnector.o: ../../pikotools/convert/patternreplacer.h
|
dbconnector.o: ../../pikotools/convert/patternreplacer.h
|
||||||
|
@ -69,6 +69,7 @@ flatconnector.o: ../../pikotools/textstream/types.h flatexpression.h
|
||||||
flatconnector.o: baseexpression.h morm_types.h model.h modelconnector.h
|
flatconnector.o: baseexpression.h morm_types.h model.h modelconnector.h
|
||||||
flatconnector.o: clearer.h dbconnector.h ../../pikotools/log/log.h
|
flatconnector.o: clearer.h dbconnector.h ../../pikotools/log/log.h
|
||||||
flatconnector.o: ../../pikotools/log/filelog.h queryresult.h dbexpression.h
|
flatconnector.o: ../../pikotools/log/filelog.h queryresult.h dbexpression.h
|
||||||
|
flatconnector.o: modeldata.h
|
||||||
flatexpression.o: flatexpression.h baseexpression.h
|
flatexpression.o: flatexpression.h baseexpression.h
|
||||||
flatexpression.o: ../../pikotools/textstream/textstream.h
|
flatexpression.o: ../../pikotools/textstream/textstream.h
|
||||||
flatexpression.o: ../../pikotools/space/space.h
|
flatexpression.o: ../../pikotools/space/space.h
|
||||||
|
@ -102,6 +103,7 @@ model.o: ../../pikotools/textstream/types.h modelconnector.h clearer.h
|
||||||
model.o: dbconnector.h ../../pikotools/log/log.h
|
model.o: dbconnector.h ../../pikotools/log/log.h
|
||||||
model.o: ../../pikotools/log/filelog.h queryresult.h flatconnector.h
|
model.o: ../../pikotools/log/filelog.h queryresult.h flatconnector.h
|
||||||
model.o: dbexpression.h baseexpression.h morm_types.h flatexpression.h
|
model.o: dbexpression.h baseexpression.h morm_types.h flatexpression.h
|
||||||
|
model.o: modeldata.h
|
||||||
modelconnector.o: modelconnector.h clearer.h ../../pikotools/date/date.h
|
modelconnector.o: modelconnector.h clearer.h ../../pikotools/date/date.h
|
||||||
modelconnector.o: ../../pikotools/convert/inttostr.h dbconnector.h
|
modelconnector.o: ../../pikotools/convert/inttostr.h dbconnector.h
|
||||||
modelconnector.o: ../../pikotools/textstream/textstream.h
|
modelconnector.o: ../../pikotools/textstream/textstream.h
|
||||||
|
|
|
@ -161,10 +161,12 @@ void BaseExpression::put_field_name(const wchar_t * field_name, bool add_column_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void BaseExpression::put_field_doc(Model & model, const void * field_pointer, bool insertable, bool updatable, bool is_primary_key)
|
void BaseExpression::put_field_doc(Model & model, const void * field_pointer, bool insertable, bool updatable, bool is_primary_key, ModelData * model_data)
|
||||||
{
|
{
|
||||||
model.doc_field_pointer = field_pointer;
|
model.doc_field_pointer = field_pointer;
|
||||||
|
model.model_data = model_data;
|
||||||
model.map_doc_fields();
|
model.map_doc_fields();
|
||||||
|
model.model_data = nullptr;
|
||||||
model.doc_field_pointer = nullptr;
|
model.doc_field_pointer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
namespace morm
|
namespace morm
|
||||||
{
|
{
|
||||||
class Model;
|
class Model;
|
||||||
|
class ModelData;
|
||||||
class ModelConnector;
|
class ModelConnector;
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +66,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
// give me a better name
|
// give me a better name
|
||||||
virtual void put_field_doc(Model & model, const void * field_pointer, bool insertable, bool updatable, bool is_primary_key);
|
virtual void put_field_doc(Model & model, const void * field_pointer, bool insertable, bool updatable, bool is_primary_key, ModelData * model_data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,7 +99,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FieldValue>
|
template<typename FieldValue>
|
||||||
void field_doc(Model & model, 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)
|
void field_doc(Model & model, 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 )
|
if( out_stream )
|
||||||
{
|
{
|
||||||
|
@ -107,7 +111,7 @@ public:
|
||||||
put_field_name(field_name, add_column_prefix);
|
put_field_name(field_name, add_column_prefix);
|
||||||
put_name_value_separator();
|
put_name_value_separator();
|
||||||
|
|
||||||
put_field_doc(model, reinterpret_cast<const void*>(&field_value), insertable, updatable, is_primary_key);
|
put_field_doc(model, reinterpret_cast<const void*>(&field_value), insertable, updatable, is_primary_key, model_data);
|
||||||
put_name_value_separator();
|
put_name_value_separator();
|
||||||
|
|
||||||
put_type(field_value, *out_stream);
|
put_type(field_value, *out_stream);
|
||||||
|
@ -148,7 +152,7 @@ public:
|
||||||
|
|
||||||
template<typename ModelContainer>
|
template<typename ModelContainer>
|
||||||
void field_list(const wchar_t * field_name, ModelContainer & field_value, bool insertable, bool updatable, bool is_primary_key,
|
void field_list(const wchar_t * field_name, ModelContainer & field_value, bool insertable, bool updatable, bool is_primary_key,
|
||||||
ModelConnector * model_connector, int model_connector_mode)
|
ModelConnector * model_connector, int model_connector_mode, ModelData * model_data)
|
||||||
{
|
{
|
||||||
if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) )
|
if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) )
|
||||||
{
|
{
|
||||||
|
@ -158,7 +162,7 @@ public:
|
||||||
{
|
{
|
||||||
put_field_name(field_name);
|
put_field_name(field_name);
|
||||||
put_name_value_separator();
|
put_name_value_separator();
|
||||||
put_field_value_list(field_value, model_connector, model_connector_mode);
|
put_field_value_list(field_value, model_connector, model_connector_mode, model_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
field_after();
|
field_after();
|
||||||
|
@ -271,7 +275,7 @@ protected:
|
||||||
|
|
||||||
// what about lists with a pod types? e.g. list<int>
|
// what about lists with a pod types? e.g. list<int>
|
||||||
template<typename ModelContainer>
|
template<typename ModelContainer>
|
||||||
void put_field_value_list(ModelContainer & field_value, ModelConnector * model_connector, int model_connector_mode)
|
void put_field_value_list(ModelContainer & field_value, ModelConnector * model_connector, int model_connector_mode, ModelData * model_data)
|
||||||
{
|
{
|
||||||
if( out_stream )
|
if( out_stream )
|
||||||
{
|
{
|
||||||
|
@ -293,8 +297,10 @@ protected:
|
||||||
//before_field_value(field_value);
|
//before_field_value(field_value);
|
||||||
m.set_connector(model_connector);
|
m.set_connector(model_connector);
|
||||||
m.model_connector_mode = model_connector_mode;
|
m.model_connector_mode = model_connector_mode;
|
||||||
|
m.model_data = model_data;
|
||||||
generate_from_model(m);
|
generate_from_model(m);
|
||||||
m.model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE;
|
m.model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE;
|
||||||
|
m.model_data = nullptr;
|
||||||
//after_field_value(field_value);
|
//after_field_value(field_value);
|
||||||
is_first = false;
|
is_first = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void set_model_data(Model::ModelData * model_data)
|
virtual void set_model_data(ModelData * model_data)
|
||||||
{
|
{
|
||||||
this->model_data = model_data;
|
this->model_data = model_data;
|
||||||
}
|
}
|
||||||
|
@ -257,7 +257,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
ModelConnector * model_connector;
|
ModelConnector * model_connector;
|
||||||
Model::ModelData * model_data;
|
ModelData * model_data;
|
||||||
QueryResult * query_result;
|
QueryResult * query_result;
|
||||||
bool select_status;
|
bool select_status;
|
||||||
|
|
||||||
|
|
71
src/finder.h
71
src/finder.h
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Tomasz Sowa
|
* Copyright (c) 2018-2019, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -81,6 +81,7 @@ public:
|
||||||
db_expression = nullptr;
|
db_expression = nullptr;
|
||||||
was_query_error = false;
|
was_query_error = false;
|
||||||
model_data = nullptr;
|
model_data = nullptr;
|
||||||
|
set_out_stream();
|
||||||
}
|
}
|
||||||
|
|
||||||
Finder(ModelConnector * model_connector)
|
Finder(ModelConnector * model_connector)
|
||||||
|
@ -90,6 +91,7 @@ public:
|
||||||
db_expression = nullptr;
|
db_expression = nullptr;
|
||||||
was_query_error = false;
|
was_query_error = false;
|
||||||
model_data = nullptr;
|
model_data = nullptr;
|
||||||
|
set_out_stream();
|
||||||
}
|
}
|
||||||
|
|
||||||
Finder(PT::TextStream & out_stream, ModelConnector & model_connector)
|
Finder(PT::TextStream & out_stream, ModelConnector & model_connector)
|
||||||
|
@ -111,6 +113,44 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void set_out_stream()
|
||||||
|
{
|
||||||
|
if( model_connector )
|
||||||
|
{
|
||||||
|
this->out_stream = model_connector->get_stream();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->out_stream = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Finder<ModelClass> & set_out_stream(PT::TextStream * out_stream)
|
||||||
|
{
|
||||||
|
this->out_stream = out_stream;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Finder<ModelClass> & set_model_data(ModelData * model_data)
|
||||||
|
{
|
||||||
|
this->model_data = model_data;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Finder<ModelClass> & set_model_data(ModelData & model_data)
|
||||||
|
{
|
||||||
|
this->model_data = &model_data;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool was_error()
|
bool was_error()
|
||||||
{
|
{
|
||||||
return was_query_error;
|
return was_query_error;
|
||||||
|
@ -138,15 +178,9 @@ public:
|
||||||
|
|
||||||
if( model_connector )
|
if( model_connector )
|
||||||
{
|
{
|
||||||
if( !out_stream )
|
|
||||||
{
|
|
||||||
out_stream = model_connector->get_stream();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( out_stream )
|
if( out_stream )
|
||||||
{
|
{
|
||||||
set_db_expression();
|
set_db_expression();
|
||||||
|
|
||||||
out_stream->clear();
|
out_stream->clear();
|
||||||
model.set_connector(model_connector);
|
model.set_connector(model_connector);
|
||||||
}
|
}
|
||||||
|
@ -216,7 +250,7 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Finder<ModelClass> & select(Model::ModelData * model_data, bool call_prepare = true)
|
Finder<ModelClass> & select(ModelData * model_data, bool call_prepare = true)
|
||||||
{
|
{
|
||||||
if( call_prepare )
|
if( call_prepare )
|
||||||
{
|
{
|
||||||
|
@ -227,7 +261,7 @@ public:
|
||||||
return select(false);
|
return select(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Finder<ModelClass> & select(Model::ModelData & model_data, bool call_prepare = true)
|
Finder<ModelClass> & select(ModelData & model_data, bool call_prepare = true)
|
||||||
{
|
{
|
||||||
if( call_prepare )
|
if( call_prepare )
|
||||||
{
|
{
|
||||||
|
@ -415,6 +449,23 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Finder<ModelClass> & raw(PT::TextStream & sql, bool add_spaces = true)
|
||||||
|
{
|
||||||
|
if( out_stream )
|
||||||
|
{
|
||||||
|
if( add_spaces )
|
||||||
|
(*out_stream) << ' ';
|
||||||
|
|
||||||
|
(*out_stream) << sql;
|
||||||
|
|
||||||
|
if( add_spaces )
|
||||||
|
(*out_stream) << ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Finder<ModelClass> & raw(long val, bool add_spaces = true)
|
Finder<ModelClass> & raw(long val, bool add_spaces = true)
|
||||||
{
|
{
|
||||||
if( out_stream )
|
if( out_stream )
|
||||||
|
@ -500,7 +551,7 @@ private:
|
||||||
ModelClass model;
|
ModelClass model;
|
||||||
bool was_query_error;
|
bool was_query_error;
|
||||||
std::wstring last_query_error;
|
std::wstring last_query_error;
|
||||||
Model::ModelData * model_data;
|
ModelData * model_data;
|
||||||
std::wstring column_prefix;
|
std::wstring column_prefix;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -129,8 +129,7 @@ bool Model::found()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Model::to_text(PT::TextStream & stream, ModelData * model_data, bool clear_stream)
|
||||||
void Model::to_text(PT::TextStream & stream, bool clear_stream)
|
|
||||||
{
|
{
|
||||||
if( clear_stream )
|
if( clear_stream )
|
||||||
{
|
{
|
||||||
|
@ -145,7 +144,9 @@ void Model::to_text(PT::TextStream & stream, bool clear_stream)
|
||||||
|
|
||||||
if( flat_connector )
|
if( flat_connector )
|
||||||
{
|
{
|
||||||
|
this->model_data = model_data;
|
||||||
flat_connector->to_text(stream, *this);
|
flat_connector->to_text(stream, *this);
|
||||||
|
this->model_data = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +154,20 @@ void Model::to_text(PT::TextStream & stream, bool clear_stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Model::to_text(std::string & str, bool clear_string)
|
void Model::to_text(PT::TextStream & stream, ModelData & model_data, bool clear_stream)
|
||||||
|
{
|
||||||
|
to_text(stream, &model_data, clear_stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Model::to_text(PT::TextStream & stream, bool clear_stream)
|
||||||
|
{
|
||||||
|
to_text(stream, nullptr, clear_stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Model::to_text(std::string & str, ModelData * model_data, bool clear_string)
|
||||||
{
|
{
|
||||||
if( model_connector )
|
if( model_connector )
|
||||||
{
|
{
|
||||||
|
@ -162,13 +176,25 @@ void Model::to_text(std::string & str, bool clear_string)
|
||||||
|
|
||||||
if( out_stream )
|
if( out_stream )
|
||||||
{
|
{
|
||||||
to_text(*out_stream, true);
|
to_text(*out_stream, model_data, true);
|
||||||
out_stream->to_string(str, clear_string);
|
out_stream->to_string(str, clear_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Model::to_text(std::string & str, ModelData & model_data, bool clear_string)
|
||||||
|
{
|
||||||
|
to_text(str, &model_data, clear_string);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Model::to_text(std::string & str, bool clear_string)
|
||||||
|
{
|
||||||
|
to_text(str, nullptr, clear_string);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string Model::to_text()
|
std::string Model::to_text()
|
||||||
{
|
{
|
||||||
std::string str;
|
std::string str;
|
||||||
|
|
34
src/model.h
34
src/model.h
|
@ -42,6 +42,7 @@
|
||||||
#include "dbexpression.h"
|
#include "dbexpression.h"
|
||||||
#include "flatexpression.h"
|
#include "flatexpression.h"
|
||||||
#include "queryresult.h"
|
#include "queryresult.h"
|
||||||
|
#include "modeldata.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,25 +54,6 @@ class Model
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
class ModelData
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
ModelData() {}
|
|
||||||
virtual ~ModelData() {}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* may to add:
|
|
||||||
* std::set<std::wstring> skip_columns;
|
|
||||||
* and Finder can use this
|
|
||||||
* also update and insert from Model
|
|
||||||
* (but what about the same name of columns through the whole objects-tree?
|
|
||||||
* may we can save the name of the table too?)
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
|
|
||||||
enum SaveMode
|
enum SaveMode
|
||||||
{
|
{
|
||||||
DO_INSERT_ON_SAVE,
|
DO_INSERT_ON_SAVE,
|
||||||
|
@ -115,9 +97,14 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void table_name(PT::TextStream & stream);
|
virtual void table_name(PT::TextStream & stream);
|
||||||
|
|
||||||
|
virtual void to_text(PT::TextStream & stream, ModelData * model_data = nullptr, bool clear_stream = true);
|
||||||
|
virtual void to_text(PT::TextStream & stream, ModelData & model_data, bool clear_stream = true);
|
||||||
virtual void to_text(PT::TextStream & stream, bool clear_stream = true);
|
virtual void to_text(PT::TextStream & stream, bool clear_stream = true);
|
||||||
|
|
||||||
|
virtual void to_text(std::string & str, ModelData * model_data = nullptr, bool clear_string = true);
|
||||||
|
virtual void to_text(std::string & str, ModelData & model_data, bool clear_string = true);
|
||||||
virtual void to_text(std::string & str, bool clear_string = true);
|
virtual void to_text(std::string & str, bool clear_string = true);
|
||||||
|
|
||||||
virtual std::string to_text();
|
virtual std::string to_text();
|
||||||
virtual std::string to_string();
|
virtual std::string to_string();
|
||||||
|
|
||||||
|
@ -723,6 +710,7 @@ protected:
|
||||||
if( model_connector )
|
if( model_connector )
|
||||||
{
|
{
|
||||||
field_model.set_connector(model_connector);
|
field_model.set_connector(model_connector);
|
||||||
|
field_model.model_data = model_data;
|
||||||
|
|
||||||
// IMPLEMENTME what about db?
|
// IMPLEMENTME what about db?
|
||||||
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING )
|
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING )
|
||||||
|
@ -768,6 +756,8 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
field_model.model_data = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -791,7 +781,7 @@ protected:
|
||||||
// IMPROVE ME
|
// IMPROVE ME
|
||||||
// what about model_data and save_mode?
|
// what about model_data and save_mode?
|
||||||
// may it should be placed inside some structure?
|
// may it should be placed inside some structure?
|
||||||
flat_expression->field_list(flat_field_name, field_container, insertable, updatable, is_primary_key, model_connector, model_connector_mode);
|
flat_expression->field_list(flat_field_name, field_container, insertable, updatable, is_primary_key, model_connector, model_connector_mode, model_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -818,7 +808,7 @@ protected:
|
||||||
if( doc_expression && !is_empty_field(flat_field_name) )
|
if( doc_expression && !is_empty_field(flat_field_name) )
|
||||||
{
|
{
|
||||||
// insertable, updatable and is_primary_key are ignored here
|
// insertable, updatable and is_primary_key are ignored here
|
||||||
doc_expression->field_doc(*this, flat_field_name, field_container, insertable, updatable, is_primary_key);
|
doc_expression->field_doc(*this, flat_field_name, field_container, insertable, updatable, is_primary_key, model_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* This file is a part of morm
|
||||||
|
* and is distributed under the 2-Clause BSD licence.
|
||||||
|
* Author: Tomasz Sowa <t.sowa@ttmath.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Tomasz Sowa
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef headerfile_morm_modeldata
|
||||||
|
#define headerfile_morm_modeldata
|
||||||
|
|
||||||
|
|
||||||
|
namespace morm
|
||||||
|
{
|
||||||
|
|
||||||
|
class ModelData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
ModelData() {}
|
||||||
|
virtual ~ModelData() {}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* may to add:
|
||||||
|
* std::set<std::wstring> skip_columns;
|
||||||
|
* and Finder can use this
|
||||||
|
* also update and insert from Model
|
||||||
|
* (but what about the same name of columns through the whole objects-tree?
|
||||||
|
* may we can save the name of the table too?)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue