summaryrefslogtreecommitdiffstats
path: root/newmoviewizard.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2020-01-04 13:01:20 +0100
committerArno <arno@disconnect.de>2020-01-04 13:01:20 +0100
commit227c40feac64a172ce967ff8f020c17bdf462102 (patch)
tree87baab56daa0075d085a52fcbf518f7acd7ef2ab /newmoviewizard.cpp
parent45f5a502c1344cba2a3b90954d55d4ed37b3a619 (diff)
downloadSheMov-227c40feac64a172ce967ff8f020c17bdf462102.tar.gz
SheMov-227c40feac64a172ce967ff8f020c17bdf462102.tar.bz2
SheMov-227c40feac64a172ce967ff8f020c17bdf462102.zip
Make it possible to add files to existing series parts
It's not as easy as it sounds, since a transaction is kaputt after a failed query. To overcome that that, introduce 2 savepoints. One before adding the seriespart, and one before the metadata. Works like a charm!
Diffstat (limited to 'newmoviewizard.cpp')
-rw-r--r--newmoviewizard.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp
index 8cd9936..c4370f6 100644
--- a/newmoviewizard.cpp
+++ b/newmoviewizard.cpp
@@ -83,6 +83,7 @@ void NewMovieWizard::accept(){
return;
}
}
+ QSqlQuery savePoint("SAVEPOINT before_parts", db);
QSqlQuery insertPartQ(db);
insertPartQ.prepare("INSERT INTO seriesparts (iseries_id, iseriespart, tsubtitle) VALUES(:sid, :pid, :tsub)");
insertPartQ.bindValue(":sid", seriesId);
@@ -90,9 +91,13 @@ void NewMovieWizard::accept(){
insertPartQ.bindValue(":tsub", subtitle);
int seriesPartId = 0;
if(!insertPartQ.exec()){
- QMessageBox::critical(this, tr("Error"), tr("Hmm, seems we already have that part of the series... Bailing out!"));
- db.rollback();
- return;
+ int res = QMessageBox::question(this, tr("Question"), tr("We already have that part of the series. Continue anyway?"));
+ if(res == QMessageBox::No){
+ db.rollback();
+ return;
+ }else{
+ QSqlQuery rollbackSave("ROLLBACK TO SAVEPOINT before_parts", db);
+ }
}
QSqlQuery partNoQ(db);
partNoQ.prepare("SELECT iseriesparts_id FROM seriesparts WHERE iseries_id = :sid AND iseriespart = :pid AND tsubtitle = :tsub");
@@ -259,6 +264,7 @@ void NewMovieWizard::accept(){
}
//genres done!
//now handle metadata
+ QSqlQuery savePoint2("SAVEPOINT before_metadata", db);
QSqlQuery insertMetadataQ(db);
insertMetadataQ.prepare("INSERT INTO metadata (iseriespart_id, sireleaseyear, tsourcemedium, tsubject, treleasegroup, tencoderopts, tcomment, sipasses) VALUES(:pid, :rely, :source, :sub, :group, :encopts, :comment, :passes)");
MovieMetadataPage *metadataPage = qobject_cast<MovieMetadataPage*>(page(3));
@@ -272,9 +278,13 @@ void NewMovieWizard::accept(){
insertMetadataQ.bindValue(":comment", metadata.at(ArchiveModel::Comment));
insertMetadataQ.bindValue(":passes", metadata.at(ArchiveModel::Passes));
if(!insertMetadataQ.exec()){
- QMessageBox::critical(this, tr("Error"), tr("Failed to insert metadata."));
- db.rollback();
- return;
+ int res = QMessageBox::question(this, tr("Question"), tr("Failed to insert metadata. Continue anyway?"));
+ if(res == QMessageBox::No){
+ db.rollback();
+ return;
+ }else{
+ QSqlQuery rollbackSave("ROLLBACK TO SAVEPOINT before_metadata", db);
+ }
}
//we're still here, good
//now actually move the files