Wrap reindex into transaction
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user