diff --git a/src/nut/core/abstracttableset.cpp b/src/nut/core/abstracttableset.cpp index e1b7eb9..5a1e574 100644 --- a/src/nut/core/abstracttableset.cpp +++ b/src/nut/core/abstracttableset.cpp @@ -57,16 +57,17 @@ int AbstractTableSet::save(Database *db) masterModel = db->model().tableByClassName( QString::fromUtf8(data->table->metaObject()->className())); - for (auto i = data->weakChildren.begin(); i != data->weakChildren.end(); ) { - auto &row = *i; + QMutableListIterator> weaks(data->weakChildren); + while (weaks.hasNext()) { + auto &row = weaks.next(); if (!row) { - i = data->weakChildren.erase(i); + weaks.remove(); continue; } auto t = row.lock(); if (t.isNull()) { - i = data->weakChildren.erase(i); + weaks.remove(); continue; } @@ -80,31 +81,34 @@ int AbstractTableSet::save(Database *db) || t->status() == Table::Deleted) { rowsAffected += t->save(db); } - i++; } - for (auto i = data->children.begin(); i != data->children.end(); ) { - auto &t = *i; - if (!t) { - i = data->children.erase(i); + QMutableListIterator> childs(data->children); + + while (childs.hasNext()) { + auto &row = childs.next(); + if (!row) { + childs.remove(); continue; } if (data->table) - t->setParentTable(data->table, + row->setParentTable(data->table, masterModel, db->model().tableByClassName( - QString::fromUtf8(t->metaObject()->className()))); + QString::fromUtf8(row->metaObject()->className()))); - if (t->status() == Table::Added || t->status() == Table::Modified - || t->status() == Table::Deleted) { - rowsAffected += t->save(db); - data->weakChildren.append(t.toWeakRef()); + if (row->status() == Table::Added || row->status() == Table::Modified + || row->status() == Table::Deleted) { + rowsAffected += row->save(db); + data->weakChildren.append(row.toWeakRef()); + + childs.remove(); + continue; } - i++; } - data->children.clear(); +// data->children.clear(); return rowsAffected; } diff --git a/tests/auto/common/consts.h b/tests/auto/common/consts.h index 7f311fe..96c5a2a 100644 --- a/tests/auto/common/consts.h +++ b/tests/auto/common/consts.h @@ -49,17 +49,17 @@ # define CC "Unknown" #endif -#define PRINT_FORM(db) \ - qDebug() << "\n\n****************************" \ - << "\nAll tests passed," \ - << "please fill in bellow form and email it to me at" \ - << "hamed.masafi@gmail.com" \ - << "\n\tDriver:" << db.driver() \ - << "\n\tOS: " OS " (version: ________)" \ - << "\n\tCompiler: " CC " (version: ________)" \ - << "\n\tQt version: " QT_VERSION_STR \ - << "\n\tTest:" << metaObject()->className() \ - << "\n****************************\n"; +#define PRINT_FORM(db) +// qDebug() << "\n\n****************************" \ +// << "\nAll tests passed," \ +// << "please fill in bellow form and email it to me at" \ +// << "hamed.masafi@gmail.com" \ +// << "\n\tDriver:" << db.driver() \ +// << "\n\tOS: " OS " (version: ________)" \ +// << "\n\tCompiler: " CC " (version: ________)" \ +// << "\n\tQt version: " QT_VERSION_STR \ +// << "\n\tTest:" << metaObject()->className() \ +// << "\n****************************\n"; #endif // CONSTS_H diff --git a/tests/auto/tst_basic/tst_basic.cpp b/tests/auto/tst_basic/tst_basic.cpp index f11bbd0..97a8daa 100644 --- a/tests/auto/tst_basic/tst_basic.cpp +++ b/tests/auto/tst_basic/tst_basic.cpp @@ -257,7 +257,7 @@ void BasicTest::testDate() db.posts()->append(newPost); - db.saveChanges(true); + db.saveChanges(); auto q = db.posts()->query() .where(Post::idField() == newPost->id()) diff --git a/tests/auto/tst_json/tst_json.cpp b/tests/auto/tst_json/tst_json.cpp index 0f9f6ef..76a27e2 100644 --- a/tests/auto/tst_json/tst_json.cpp +++ b/tests/auto/tst_json/tst_json.cpp @@ -45,7 +45,7 @@ void TestJson::store() qDebug() << e.errorString(); t->setDoc(doc); db.sampleTable()->append(t); - db.saveChanges(true); + db.saveChanges(); int id = t->id(); auto newObj = db.sampleTable()->query()