]> Some of my projects - localmylist.git/commitdiff
Add a way to fail requests that did not complete in a certain amount of time
authorAPTX <marek321@gmail.com>
Tue, 24 Jul 2012 19:40:40 +0000 (21:40 +0200)
committerAPTX <marek321@gmail.com>
Tue, 24 Jul 2012 19:40:40 +0000 (21:40 +0200)
localmylist/database.cpp
localmylist/database.h
management-gui/mainwindow.cpp
management-gui/mainwindow.h
management-gui/mainwindow.ui

index 516f23b78181454e2762090dfdca876f3dc2d4a2..2147c316cb9e211b7d597cfabc0acc4c95d38504 100644 (file)
@@ -1220,6 +1220,31 @@ bool Database::clearFailedFileRenames()
                                "WHERE failed_rename = true");
 }
 
+bool Database::clearFailedPendingRequests(int minutes)
+{
+       QSqlQuery &q = prepare(
+       "UPDATE pending_request "
+       "       SET start = NULL, fail_count = fail_count + 1 "
+       "       WHERE start IS NOT NULL "
+       "               AND age(current_timestamp, start) > :interval ");
+       q.bindValue(":interval", QString::number(minutes) + " minutes");
+
+       return exec(q);
+}
+
+bool Database::clearFailedPendingMyListUpdateRequests(int minutes)
+{
+       QSqlQuery &q = prepare(
+       "UPDATE pending_mylist_update "
+       "       SET started = NULL, fail_count = fail_count + 1 "
+       "       WHERE started IS NOT NULL "
+       "               AND finished IS NULL "
+       "               AND age(current_timestamp, started) > :interval ");
+       q.bindValue(":interval", QString::number(minutes) + " minutes");
+
+       return exec(q);
+}
+
 bool Database::truncateTitleData()
 {
        return exec("TRUNCATE TABLE anime_title");
index 9960d9be7f54d0f6ef88e7c6e593ec86380b3e1c..751bc3379e27253f6cb1ca9f935b0c44796f1483 100644 (file)
@@ -289,6 +289,9 @@ public slots:
        bool clearFileRenames();
        bool clearFailedFileRenames();
 
+       bool clearFailedPendingRequests(int minutes = 10);
+       bool clearFailedPendingMyListUpdateRequests(int minutes = 10);
+
        bool truncateTitleData();
        bool truncateMyListData();
        bool truncateDatabase();
index 516827c9efca31d311bcf7c20dcf6b9f7dd0f8cd..72dfb3009e2cbed76812e211f9387bc365652a5f 100644 (file)
@@ -230,6 +230,12 @@ void MainWindow::on_actionClearAnimeTitleData_triggered()
        MyList::instance()->database()->truncateTitleData();
 }
 
+void MainWindow::on_actionClearFailedRequests_triggered()
+{
+       LocalMyList::instance()->database()->clearFailedPendingRequests();
+       LocalMyList::instance()->database()->clearFailedPendingMyListUpdateRequests();
+}
+
 void MainWindow::on_actionRemoveKnownUnknownFiles_triggered()
 {
        LocalMyList::instance()->executeTask(new UnknownFileLookupTask());
index 712f90641bac2d45d66654d17a16b215d874b8a8..42c94b02c8b9629d98cfd02eb23836b33357440c 100644 (file)
@@ -58,6 +58,7 @@ private slots:
        void on_actionClearDatabase_triggered();
        void on_actionClearMyListData_triggered();
        void on_actionClearAnimeTitleData_triggered();
+       void on_actionClearFailedRequests_triggered();
 
        void on_actionRemoveKnownUnknownFiles_triggered();
 
index 68a196349df2192b5bef2013331eac2be00adb5e..53547d6322374039290aab9d802098de4caab9b9 100644 (file)
@@ -96,6 +96,7 @@
     <addaction name="actionRenameFiles"/>
     <addaction name="actionRemoveKnownUnknownFiles"/>
     <addaction name="separator"/>
+    <addaction name="actionClearFailedRequests"/>
     <addaction name="actionClearFailedFileRenames"/>
     <addaction name="separator"/>
     <addaction name="actionClearStartedPendingRequests"/>
     <string>Add Related Episode Info</string>
    </property>
   </action>
+  <action name="actionClearFailedRequests">
+   <property name="text">
+    <string>Clear Failed Requests</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>