fixed: in Model::generate_insert_query there was not ModelEnv set (was a null pointer)
similarly in generate_update_query and generate_remove_query added: support std::vector<> in Model::field() methods added: serializing std::vector and std::list for non-model classes in BaseExpression git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1200 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
28
src/model.h
28
src/model.h
@@ -36,6 +36,8 @@
|
||||
#define headerfile_morm_model
|
||||
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
#include "textstream/textstream.h"
|
||||
#include "modelconnector.h"
|
||||
@@ -107,15 +109,15 @@ public:
|
||||
virtual std::string to_text();
|
||||
virtual std::string to_string();
|
||||
|
||||
virtual void generate_insert_query(PT::TextStream & stream); // FIX ME needed model_data
|
||||
virtual void generate_insert_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||
virtual bool insert(ModelData * model_data = nullptr);
|
||||
virtual bool insert(ModelData & model_data);
|
||||
|
||||
virtual void generate_update_query(PT::TextStream & stream); // FIX ME needed model_data
|
||||
virtual void generate_update_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||
virtual bool update(ModelData * model_data = nullptr);
|
||||
virtual bool update(ModelData & model_data);
|
||||
|
||||
virtual void generate_remove_query(PT::TextStream & stream); // FIX ME needed model_data
|
||||
virtual void generate_remove_query(PT::TextStream & stream, ModelData * model_data = nullptr);
|
||||
virtual bool remove(ModelData * model_data = nullptr);
|
||||
virtual bool remove(ModelData & model_data);
|
||||
|
||||
@@ -281,6 +283,12 @@ protected:
|
||||
field_list(field_name, field_name, field_value, list_model_null_pointer, insertable, updatable);
|
||||
}
|
||||
|
||||
template<typename ModelClass>
|
||||
void field(const wchar_t * field_name, std::vector<ModelClass> & field_value, bool insertable = true, bool updatable = true)
|
||||
{
|
||||
ModelClass * list_model_null_pointer = nullptr;
|
||||
field_list(field_name, field_name, field_value, list_model_null_pointer, insertable, updatable);
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
|
||||
@@ -397,7 +405,14 @@ protected:
|
||||
field_list(db_field_name, flat_field_name, field_value, list_model_null_pointer, insertable, updatable);
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
template<typename ModelClass>
|
||||
void field(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::vector<ModelClass> & field_value, bool insertable = true, bool updatable = true)
|
||||
{
|
||||
ModelClass * list_model_null_pointer = nullptr;
|
||||
field_list(db_field_name, flat_field_name, field_value, list_model_null_pointer, insertable, updatable);
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
void doc(const wchar_t * field_name, char & field_value)
|
||||
{
|
||||
doc_field_generic(field_name, field_name, field_value);
|
||||
@@ -813,6 +828,8 @@ protected:
|
||||
|
||||
if( db_expression->get_output_type() != MORM_OUTPUT_TYPE_JOIN_TABLES )
|
||||
{
|
||||
// FIX ME
|
||||
// UPDATE, INSERT, REMOVE for models
|
||||
field_model.map_fields();
|
||||
}
|
||||
|
||||
@@ -946,6 +963,9 @@ protected:
|
||||
// another select will be used (from another Finder)
|
||||
// we need only columns name
|
||||
// but columns are defined in the other model
|
||||
|
||||
// FIX ME
|
||||
// UPDATE, INSERT, REMOVE for lists
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user