diff --git a/database.cpp b/database.cpp index af90f54..290f302 100644 --- a/database.cpp +++ b/database.cpp @@ -157,6 +157,7 @@ void Database::reindex(QProgressDialog *progress) { QVariantList deleteids; QSqlDatabase database = QSqlDatabase::database(); + database.transaction(); QSqlQuery files = database.exec("SELECT id,file,mtime FROM fits_files"); progress->setMaximum(files.size()); int i = 0; @@ -169,10 +170,16 @@ void Database::reindex(QProgressDialog *progress) if(!file.exists()) deleteids.append(files.value(0)); progress->setValue(i++); + if(progress->wasCanceled()) + { + database.rollback(); + return; + } } QSqlQuery deleteFiles("DELETE FROM fits_files WHERE id = ?", database); deleteFiles.bindValue(0, deleteids); deleteFiles.execBatch(); + database.commit(); } QStringList Database::getFitsKeywords()