Wrap reindex into transaction

This commit is contained in:
2022-05-20 22:57:36 +02:00
parent b4746be190
commit a4cfc65d4b
+7
View File
@@ -157,6 +157,7 @@ void Database::reindex(QProgressDialog *progress)
{ {
QVariantList deleteids; QVariantList deleteids;
QSqlDatabase database = QSqlDatabase::database(); QSqlDatabase database = QSqlDatabase::database();
database.transaction();
QSqlQuery files = database.exec("SELECT id,file,mtime FROM fits_files"); QSqlQuery files = database.exec("SELECT id,file,mtime FROM fits_files");
progress->setMaximum(files.size()); progress->setMaximum(files.size());
int i = 0; int i = 0;
@@ -169,10 +170,16 @@ void Database::reindex(QProgressDialog *progress)
if(!file.exists()) if(!file.exists())
deleteids.append(files.value(0)); deleteids.append(files.value(0));
progress->setValue(i++); progress->setValue(i++);
if(progress->wasCanceled())
{
database.rollback();
return;
}
} }
QSqlQuery deleteFiles("DELETE FROM fits_files WHERE id = ?", database); QSqlQuery deleteFiles("DELETE FROM fits_files WHERE id = ?", database);
deleteFiles.bindValue(0, deleteids); deleteFiles.bindValue(0, deleteids);
deleteFiles.execBatch(); deleteFiles.execBatch();
database.commit();
} }
QStringList Database::getFitsKeywords() QStringList Database::getFitsKeywords()