added: Model::ModelData base class to use with Finder, Model.update(), Model.insert() and Model.remove()
added: Model.add_field_for_select() method git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1092 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -41,6 +41,7 @@ namespace morm
|
||||
Model::Model()
|
||||
{
|
||||
model_connector = nullptr;
|
||||
model_data = nullptr;
|
||||
save_mode = DO_INSERT_ON_SAVE;
|
||||
}
|
||||
|
||||
@@ -181,15 +182,30 @@ void Model::generate_insert_query(PT::TextStream & stream)
|
||||
}
|
||||
|
||||
|
||||
void Model::insert()
|
||||
bool Model::insert(ModelData * model_data)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if( model_connector )
|
||||
{
|
||||
this->model_data = model_data;
|
||||
|
||||
if( model_connector->insert(*this) )
|
||||
{
|
||||
save_mode = DO_UPDATE_ON_SAVE;
|
||||
save_mode = DO_UPDATE_ON_SAVE; // IMPROVE ME check if there is a primary key
|
||||
result = true;
|
||||
}
|
||||
|
||||
this->model_data = nullptr;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
bool Model::insert(ModelData & model_data)
|
||||
{
|
||||
return insert(&model_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -202,12 +218,24 @@ void Model::generate_update_query(PT::TextStream & stream)
|
||||
}
|
||||
|
||||
|
||||
void Model::update()
|
||||
bool Model::update(ModelData * model_data)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if( model_connector )
|
||||
{
|
||||
model_connector->update(*this);
|
||||
this->model_data = model_data;
|
||||
result = model_connector->update(*this);
|
||||
this->model_data = nullptr;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
bool Model::update(ModelData & model_data)
|
||||
{
|
||||
return update(&model_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -220,37 +248,63 @@ void Model::generate_remove_query(PT::TextStream & stream)
|
||||
}
|
||||
|
||||
|
||||
void Model::remove()
|
||||
bool Model::remove(ModelData * model_data)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if( model_connector )
|
||||
{
|
||||
this->model_data = model_data;
|
||||
|
||||
if( model_connector->remove(*this) )
|
||||
{
|
||||
save_mode = DO_INSERT_ON_SAVE;
|
||||
result = true;
|
||||
}
|
||||
|
||||
this->model_data = nullptr;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void Model::save()
|
||||
bool Model::remove(ModelData & model_data)
|
||||
{
|
||||
return remove(&model_data);
|
||||
}
|
||||
|
||||
|
||||
bool Model::save(ModelData * model_data)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
switch( save_mode )
|
||||
{
|
||||
case DO_DELETE_ON_SAVE:
|
||||
remove();
|
||||
result = remove(model_data);
|
||||
break;
|
||||
|
||||
case DO_INSERT_ON_SAVE:
|
||||
insert();
|
||||
result = insert(model_data);
|
||||
break;
|
||||
|
||||
case DO_UPDATE_ON_SAVE:
|
||||
update();
|
||||
result = update(model_data);
|
||||
break;
|
||||
|
||||
case DO_NOTHING_ON_SAVE:
|
||||
// may return true?
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
bool Model::save(ModelData & model_data)
|
||||
{
|
||||
return save(&model_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -262,6 +316,7 @@ void Model::clear()
|
||||
}
|
||||
|
||||
save_mode = DO_INSERT_ON_SAVE;
|
||||
model_data = nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user