minor
This commit is contained in:
parent
805f56c76a
commit
d780bf234a
|
|
@ -48,6 +48,7 @@
|
||||||
NUT_BEGIN_NAMESPACE
|
NUT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
int DatabasePrivate::lastId = 0;
|
int DatabasePrivate::lastId = 0;
|
||||||
|
QMap<QString, DatabaseModel> DatabasePrivate::allTableMaps;
|
||||||
|
|
||||||
DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent)
|
DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent)
|
||||||
{
|
{
|
||||||
|
|
@ -56,8 +57,8 @@ DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent)
|
||||||
bool DatabasePrivate::open(bool update)
|
bool DatabasePrivate::open(bool update)
|
||||||
{
|
{
|
||||||
Q_Q(Database);
|
Q_Q(Database);
|
||||||
if (update)
|
// if (update)
|
||||||
getCurrectScheema();
|
bool isNew = getCurrectScheema();
|
||||||
|
|
||||||
connectionName = q->metaObject()->className()
|
connectionName = q->metaObject()->className()
|
||||||
+ QString::number(DatabasePrivate::lastId);
|
+ QString::number(DatabasePrivate::lastId);
|
||||||
|
|
@ -98,7 +99,7 @@ bool DatabasePrivate::open(bool update)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(update)
|
if(isNew)
|
||||||
return updateDatabase();
|
return updateDatabase();
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -124,7 +125,6 @@ bool DatabasePrivate::updateDatabase()
|
||||||
QStringList sql = sqlGenertor->diff(last, current);
|
QStringList sql = sqlGenertor->diff(last, current);
|
||||||
db.transaction();
|
db.transaction();
|
||||||
foreach (QString s, sql) {
|
foreach (QString s, sql) {
|
||||||
qDebug() <<"cmd="<<s;
|
|
||||||
db.exec(s);
|
db.exec(s);
|
||||||
|
|
||||||
if (db.lastError().type() != QSqlError::NoError)
|
if (db.lastError().type() != QSqlError::NoError)
|
||||||
|
|
@ -158,9 +158,14 @@ bool DatabasePrivate::updateDatabase()
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabasePrivate::getCurrectScheema()
|
bool DatabasePrivate::getCurrectScheema()
|
||||||
{
|
{
|
||||||
Q_Q(Database);
|
Q_Q(Database);
|
||||||
|
if (allTableMaps.contains(q->metaObject()->className())) {
|
||||||
|
currentModel = allTableMaps[q->metaObject()->className()];
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
tables.clear();
|
tables.clear();
|
||||||
|
|
||||||
// TODO: change logs must not be in model
|
// TODO: change logs must not be in model
|
||||||
|
|
@ -201,7 +206,6 @@ void DatabasePrivate::getCurrectScheema()
|
||||||
QMetaProperty tableProperty = q->metaObject()->property(i);
|
QMetaProperty tableProperty = q->metaObject()->property(i);
|
||||||
int typeId = QMetaType::type(tableProperty.typeName());
|
int typeId = QMetaType::type(tableProperty.typeName());
|
||||||
|
|
||||||
qDebug() << tables.values().contains(tableProperty.name()) << typeId;
|
|
||||||
if (tables.values().contains(tableProperty.name())
|
if (tables.values().contains(tableProperty.name())
|
||||||
&& typeId >= QVariant::UserType) {
|
&& typeId >= QVariant::UserType) {
|
||||||
TableModel *sch = new TableModel(typeId, tableProperty.name());
|
TableModel *sch = new TableModel(typeId, tableProperty.name());
|
||||||
|
|
@ -212,6 +216,9 @@ void DatabasePrivate::getCurrectScheema()
|
||||||
foreach (TableModel *sch, currentModel)
|
foreach (TableModel *sch, currentModel)
|
||||||
foreach (RelationModel *fk, sch->foregionKeys())
|
foreach (RelationModel *fk, sch->foregionKeys())
|
||||||
fk->table = currentModel.modelByClass(fk->className);
|
fk->table = currentModel.modelByClass(fk->className);
|
||||||
|
|
||||||
|
allTableMaps.insert(q->metaObject()->className(), currentModel);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
DatabaseModel DatabasePrivate::getLastScheema()
|
DatabaseModel DatabasePrivate::getLastScheema()
|
||||||
|
|
@ -251,7 +258,6 @@ DatabaseModel DatabasePrivate::getLastScheema()
|
||||||
// ret.append(sch);
|
// ret.append(sch);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// qDebug() << "ret=" <<ret;
|
|
||||||
// return ret;
|
// return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -385,7 +391,7 @@ DatabaseModel Database::model() const
|
||||||
QString Database::tableName(QString className)
|
QString Database::tableName(QString className)
|
||||||
{
|
{
|
||||||
Q_D(Database);
|
Q_D(Database);
|
||||||
return d->tables[className];
|
return model().modelByClass(className)->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::setDatabaseName(QString databaseName)
|
void Database::setDatabaseName(QString databaseName)
|
||||||
|
|
@ -494,8 +500,9 @@ QSqlQuery Database::exec(QString sql)
|
||||||
|
|
||||||
QSqlQuery q = d->db.exec(sql);
|
QSqlQuery q = d->db.exec(sql);
|
||||||
if (d->db.lastError().type() != QSqlError::NoError)
|
if (d->db.lastError().type() != QSqlError::NoError)
|
||||||
qWarning("Error executing sql command: %s",
|
qWarning("Error executing sql command: %s; Command=%s",
|
||||||
d->db.lastError().text().toLatin1().data());
|
d->db.lastError().text().toLatin1().data(),
|
||||||
|
sql.toUtf8().constData());
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -504,10 +511,12 @@ void Database::add(TableSetBase *t)
|
||||||
tableSets.insert(t);
|
tableSets.insert(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::saveChanges()
|
int Database::saveChanges()
|
||||||
{
|
{
|
||||||
|
int rowsAffected = 0;
|
||||||
foreach (TableSetBase *ts, tableSets)
|
foreach (TableSetBase *ts, tableSets)
|
||||||
ts->save(this);
|
rowsAffected += ts->save(this);
|
||||||
|
return rowsAffected;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::cleanUp()
|
void Database::cleanUp()
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public:
|
||||||
QSqlQuery exec(QString sql);
|
QSqlQuery exec(QString sql);
|
||||||
|
|
||||||
void add(TableSetBase *);
|
void add(TableSetBase *);
|
||||||
void saveChanges();
|
int saveChanges();
|
||||||
void cleanUp();
|
void cleanUp();
|
||||||
|
|
||||||
QString databaseName() const;
|
QString databaseName() const;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public:
|
||||||
void createChangeLogs();
|
void createChangeLogs();
|
||||||
bool storeScheemaInDB();
|
bool storeScheemaInDB();
|
||||||
DatabaseModel getLastScheema();
|
DatabaseModel getLastScheema();
|
||||||
void getCurrectScheema();
|
bool getCurrectScheema();
|
||||||
|
|
||||||
QSqlDatabase db;
|
QSqlDatabase db;
|
||||||
|
|
||||||
|
|
@ -56,13 +56,15 @@ public:
|
||||||
QString connectionName;
|
QString connectionName;
|
||||||
QString driver;
|
QString driver;
|
||||||
|
|
||||||
QHash<QString, QString> tables;
|
|
||||||
|
|
||||||
SqlGeneratorBase *sqlGenertor;
|
SqlGeneratorBase *sqlGenertor;
|
||||||
DatabaseModel currentModel;
|
DatabaseModel currentModel;
|
||||||
|
|
||||||
TableSet<ChangeLogTable> *changeLogs;
|
TableSet<ChangeLogTable> *changeLogs;
|
||||||
|
|
||||||
|
QT_DEPRECATED
|
||||||
|
QHash<QString, QString> tables;
|
||||||
|
static QMap<QString, DatabaseModel> allTableMaps;
|
||||||
static int lastId;
|
static int lastId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,10 @@ TableModel *DatabaseModel::model(QString tableName) const
|
||||||
if(s->name() == tableName)
|
if(s->name() == tableName)
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qWarning("Table with name '%s' not found in model",
|
||||||
|
qUtf8Printable(tableName));
|
||||||
|
Q_UNREACHABLE();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,6 +57,10 @@ TableModel *DatabaseModel::modelByClass(QString className) const
|
||||||
if(s->className() == className)
|
if(s->className() == className)
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qWarning("Table with class name '%s' not found in model",
|
||||||
|
qUtf8Printable(className));
|
||||||
|
Q_UNREACHABLE();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
37
src/query.h
37
src/query.h
|
|
@ -56,10 +56,7 @@ public:
|
||||||
|
|
||||||
QVariant max(FieldPhrase<int> &f);
|
QVariant max(FieldPhrase<int> &f);
|
||||||
QVariant min(FieldPhrase<int> &f);
|
QVariant min(FieldPhrase<int> &f);
|
||||||
QVariant average(FieldPhrase<int> &f){
|
QVariant average(FieldPhrase<int> &f);
|
||||||
//TODO: ...
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
Query<T> *join(const QString &tableName);
|
Query<T> *join(const QString &tableName);
|
||||||
Query<T> *setWhere(WherePhrase where);
|
Query<T> *setWhere(WherePhrase where);
|
||||||
|
|
@ -87,8 +84,8 @@ Q_OUTOFLINE_TEMPLATE Query<T>::Query(Database *database, TableSetBase *tableSet)
|
||||||
|
|
||||||
d->database = database;
|
d->database = database;
|
||||||
d->tableSet = tableSet;
|
d->tableSet = tableSet;
|
||||||
d->tableName = TableModel::findByClassName(T::staticMetaObject.className())->name();
|
d->tableName = //TableModel::findByClassName(T::staticMetaObject.className())->name();
|
||||||
//d->database->tableName(T::staticMetaObject.className());
|
d->database->model().modelByClass(T::staticMetaObject.className())->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
|
|
@ -113,17 +110,18 @@ Q_OUTOFLINE_TEMPLATE QList<T *> Query<T>::toList(int count)
|
||||||
d->orderPhrases,
|
d->orderPhrases,
|
||||||
d->tableName,
|
d->tableName,
|
||||||
d->joinClassName);
|
d->joinClassName);
|
||||||
qDebug() << "sql="<<sql;
|
|
||||||
QSqlQuery q = d->database->exec(sql);
|
QSqlQuery q = d->database->exec(sql);
|
||||||
|
|
||||||
QString pk = TableModel::findByName(d->tableName)->primaryKey();
|
// QString pk = TableModel::findByName(d->tableName)->primaryKey();
|
||||||
// QString pk = d->database->model().model(d->tableName)->primaryKey();
|
QString pk = d->database->model().model(d->tableName)->primaryKey();
|
||||||
QVariant lastPkValue = QVariant();
|
QVariant lastPkValue = QVariant();
|
||||||
int childTypeId = 0;
|
int childTypeId = 0;
|
||||||
T *lastRow = 0;
|
T *lastRow = 0;
|
||||||
TableSetBase *childTableSet;
|
TableSetBase *childTableSet;
|
||||||
QStringList masterFields = TableModel::findByName(d->tableName)->fieldsNames();
|
|
||||||
//QStringList masterFields = d->database->model().model(d->tableName)->fieldsNames();
|
//FIXME: getting table error
|
||||||
|
// QStringList masterFields = TableModel::findByName(d->tableName)->fieldsNames();
|
||||||
|
QStringList masterFields = d->database->model().model(d->tableName)->fieldsNames();
|
||||||
QStringList childFields;
|
QStringList childFields;
|
||||||
if(!d->joinClassName.isNull()) {
|
if(!d->joinClassName.isNull()) {
|
||||||
TableModel *joinTableModel = TableModel::findByClassName(d->joinClassName);
|
TableModel *joinTableModel = TableModel::findByClassName(d->joinClassName);
|
||||||
|
|
@ -131,8 +129,8 @@ Q_OUTOFLINE_TEMPLATE QList<T *> Query<T>::toList(int count)
|
||||||
// childFields = d->database->model().modelByClass(d->joinClassName)->fieldsNames();
|
// childFields = d->database->model().modelByClass(d->joinClassName)->fieldsNames();
|
||||||
childFields = TableModel::findByClassName(d->joinClassName)->fieldsNames();
|
childFields = TableModel::findByClassName(d->joinClassName)->fieldsNames();
|
||||||
QString joinTableName = d->database->tableName(d->joinClassName);
|
QString joinTableName = d->database->tableName(d->joinClassName);
|
||||||
// childTypeId = d->database->model().model(joinTableName)->typeId();
|
childTypeId = d->database->model().model(joinTableName)->typeId();
|
||||||
childTypeId = TableModel::findByName(joinTableName)->typeId();
|
// childTypeId = TableModel::findByName(joinTableName)->typeId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -200,6 +198,7 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::count()
|
||||||
d->select = "COUNT(*)";
|
d->select = "COUNT(*)";
|
||||||
QSqlQuery q = d->database->exec(d->database->sqlGenertor()->selectCommand("COUNT(*)", d->wheres, d->orders, d->tableName, d->joinClassName));
|
QSqlQuery q = d->database->exec(d->database->sqlGenertor()->selectCommand("COUNT(*)", d->wheres, d->orders, d->tableName, d->joinClassName));
|
||||||
|
|
||||||
|
qDebug() << "sql="<<d->database->sqlGenertor()->selectCommand("COUNT(*)", d->wheres, d->orders, d->tableName, d->joinClassName);
|
||||||
if(q.next())
|
if(q.next())
|
||||||
return q.value(0).toInt();
|
return q.value(0).toInt();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -227,6 +226,18 @@ Q_OUTOFLINE_TEMPLATE QVariant Query<T>::min(FieldPhrase<int> &f){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
Q_OUTOFLINE_TEMPLATE QVariant Query<T>::average(FieldPhrase<int> &f)
|
||||||
|
{
|
||||||
|
Q_D(Query);
|
||||||
|
|
||||||
|
QSqlQuery q = d->database->exec(d->database->sqlGenertor()->selectCommand("AVG(" + f.data()->text + ")", d->wheres, d->orders, d->tableName, d->joinClassName));
|
||||||
|
|
||||||
|
if(q.next())
|
||||||
|
return q.value(0).toInt();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
Q_OUTOFLINE_TEMPLATE int Query<T>::remove()
|
Q_OUTOFLINE_TEMPLATE int Query<T>::remove()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ QString SqlGeneratorBase::masterDatabaseName(QString databaseName)
|
||||||
|
|
||||||
QString SqlGeneratorBase::saveRecord(Table *t, QString tableName)
|
QString SqlGeneratorBase::saveRecord(Table *t, QString tableName)
|
||||||
{
|
{
|
||||||
|
Q_ASSERT(!tableName.isEmpty() && !tableName.isNull());
|
||||||
switch(t->status()){
|
switch(t->status()){
|
||||||
case Table::Added:
|
case Table::Added:
|
||||||
return insertRecord(t, tableName);
|
return insertRecord(t, tableName);
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ void Table::setTableSet(TableSetBase *parent)
|
||||||
_tableSet->add(this);
|
_tableSet->add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Table::save(Database *db)
|
int Table::save(Database *db)
|
||||||
{
|
{
|
||||||
QSqlQuery q = db->exec(db->sqlGenertor()->saveRecord(this, db->tableName(metaObject()->className())));
|
QSqlQuery q = db->exec(db->sqlGenertor()->saveRecord(this, db->tableName(metaObject()->className())));
|
||||||
|
|
||||||
|
|
@ -131,6 +131,8 @@ void Table::save(Database *db)
|
||||||
foreach(TableSetBase *ts, tableSets)
|
foreach(TableSetBase *ts, tableSets)
|
||||||
ts->save(db);
|
ts->save(db);
|
||||||
setStatus(FeatchedFromDB);
|
setStatus(FeatchedFromDB);
|
||||||
|
|
||||||
|
return q.numRowsAffected();
|
||||||
}
|
}
|
||||||
|
|
||||||
Table::Status Table::status() const
|
Table::Status Table::status() const
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
void add(TableSetBase *);
|
void add(TableSetBase *);
|
||||||
void save(Database *db);
|
int save(Database *db);
|
||||||
|
|
||||||
QString primaryKey() const;
|
QString primaryKey() const;
|
||||||
bool isPrimaryKeyAutoIncrement() const;
|
bool isPrimaryKeyAutoIncrement() const;
|
||||||
|
|
|
||||||
|
|
@ -103,13 +103,13 @@ TableModel *TableModel::findByTypeId(int typeId)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TableModel *TableModel::findByName(QString name)
|
//TableModel *TableModel::findByName(QString name)
|
||||||
{
|
//{
|
||||||
foreach (TableModel *model, _allModels)
|
// foreach (TableModel *model, _allModels)
|
||||||
if(model->name() == name)
|
// if(model->name() == name)
|
||||||
return model;
|
// return model;
|
||||||
return 0;
|
// return 0;
|
||||||
}
|
//}
|
||||||
|
|
||||||
TableModel *TableModel::findByClassName(QString className)
|
TableModel *TableModel::findByClassName(QString className)
|
||||||
{
|
{
|
||||||
|
|
@ -146,6 +146,10 @@ bool TableModel::operator !=(const TableModel &t) const
|
||||||
|
|
||||||
TableModel::TableModel(int typeId, QString tableName)
|
TableModel::TableModel(int typeId, QString tableName)
|
||||||
{
|
{
|
||||||
|
//TODO: check that
|
||||||
|
// if (findByTypeId(typeId))
|
||||||
|
// return;
|
||||||
|
|
||||||
const QMetaObject *tableMetaObject = QMetaType::metaObjectForType(typeId);
|
const QMetaObject *tableMetaObject = QMetaType::metaObjectForType(typeId);
|
||||||
|
|
||||||
_typeId = typeId;
|
_typeId = typeId;
|
||||||
|
|
@ -238,8 +242,8 @@ TableModel::TableModel(int typeId, QString tableName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_allModels.insert(this);
|
if(!findByTypeId(typeId) && !tableName.isNull())
|
||||||
qDebug() << "all models"<<_allModels;
|
_allModels.insert(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -267,7 +271,6 @@ TableModel::TableModel(QJsonObject json, QString tableName)
|
||||||
QJsonObject fieldObject = fields.value(key).toObject();
|
QJsonObject fieldObject = fields.value(key).toObject();
|
||||||
FieldModel *f = new FieldModel;
|
FieldModel *f = new FieldModel;
|
||||||
f->name = fieldObject.value(__NAME).toString();
|
f->name = fieldObject.value(__NAME).toString();
|
||||||
qDebug() << "fieldObject.value(__TYPE).toString()"<<fieldObject.value(__TYPE).toString();
|
|
||||||
f->type = QVariant::nameToType(fieldObject.value(__TYPE).toString().toLatin1().data());
|
f->type = QVariant::nameToType(fieldObject.value(__TYPE).toString().toLatin1().data());
|
||||||
|
|
||||||
if(fieldObject.contains(__nut_NOT_NULL))
|
if(fieldObject.contains(__nut_NOT_NULL))
|
||||||
|
|
@ -288,7 +291,6 @@ TableModel::TableModel(QJsonObject json, QString tableName)
|
||||||
field(json.value(__nut_PRIMARY_KEY).toString())->isAutoIncrement = true;
|
field(json.value(__nut_PRIMARY_KEY).toString())->isAutoIncrement = true;
|
||||||
|
|
||||||
_allModels.insert(this);
|
_allModels.insert(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject TableModel::toJson() const
|
QJsonObject TableModel::toJson() const
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ class TableModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TableModel(int typeId, QString tableName);
|
TableModel(int typeId, QString tableName = QString::null);
|
||||||
TableModel(QJsonObject json, QString tableName);
|
TableModel(QJsonObject json, QString tableName);
|
||||||
|
|
||||||
QJsonObject toJson() const;
|
QJsonObject toJson() const;
|
||||||
|
|
@ -103,7 +103,7 @@ public:
|
||||||
|
|
||||||
static QSet<TableModel *> allModels();
|
static QSet<TableModel *> allModels();
|
||||||
static TableModel *findByTypeId(int typeId);
|
static TableModel *findByTypeId(int typeId);
|
||||||
static TableModel *findByName(QString name);
|
// static TableModel *findByName(QString name);
|
||||||
static TableModel *findByClassName(QString className);
|
static TableModel *findByClassName(QString className);
|
||||||
|
|
||||||
bool operator ==(const TableModel &t) const;
|
bool operator ==(const TableModel &t) const;
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,9 @@ TableSetBase::TableSetBase(Table *parent) : QObject(parent), _database(0), _tabl
|
||||||
parent->add(this);
|
parent->add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TableSetBase::save(Database *db)
|
int TableSetBase::save(Database *db)
|
||||||
{
|
{
|
||||||
|
int rowsAffected = 0;
|
||||||
foreach (Table *t, _tablesList) {
|
foreach (Table *t, _tablesList) {
|
||||||
if(_table)
|
if(_table)
|
||||||
t->setParentTable(_table);
|
t->setParentTable(_table);
|
||||||
|
|
@ -44,9 +45,11 @@ void TableSetBase::save(Database *db)
|
||||||
if(t->status() == Table::Added
|
if(t->status() == Table::Added
|
||||||
|| t->status() == Table::Modified
|
|| t->status() == Table::Modified
|
||||||
|| t->status() == Table::Deleted){
|
|| t->status() == Table::Deleted){
|
||||||
t->save(db);
|
rowsAffected += t->save(db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return rowsAffected;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TableSetBase::clearChilds()
|
void TableSetBase::clearChilds()
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public:
|
||||||
TableSetBase(Database *parent);
|
TableSetBase(Database *parent);
|
||||||
TableSetBase(Table *parent);
|
TableSetBase(Table *parent);
|
||||||
|
|
||||||
virtual void save(Database *db);
|
virtual int save(Database *db);
|
||||||
void clearChilds();
|
void clearChilds();
|
||||||
void add(Table* t);
|
void add(Table* t);
|
||||||
QString childClassName() const;
|
QString childClassName() const;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue