Co-authored-by: Hamed Masafi <hamed.masfi@gmail.com>
This commit is contained in:
Hamed Masafi 2022-09-12 12:24:43 +04:30 committed by GitHub
parent c22ff56600
commit c085370d1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 30 deletions

View File

@ -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<QWeakPointer<Table>> 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<QSharedPointer<Table>> 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;
}

View File

@ -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

View File

@ -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())

View File

@ -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()