version 0.3.33
[fms.git] / src / dbmaintenancethread.cpp
index 4d48786..0563e11 100644 (file)
@@ -40,8 +40,8 @@ void DBMaintenanceThread::Do10MinuteMaintenance()
        // build a list of boards and messageids and then use that instead of keeping the query in use\r
        SQLite3DB::Statement selectst=m_db->Prepare("SELECT tblMessage.MessageID FROM tblMessage \\r
                                                                                                INNER JOIN tblMessageBoard ON tblMessage.MessageID=tblMessageBoard.MessageID \\r
-                                                                                               LEFT JOIN tblThreadPost ON tblMessage.MessageID=tblThreadPost.MessageID \\r
-                                                                                               WHERE tblMessageBoard.BoardID=? AND tblThreadPost.MessageID IS NULL;");\r
+                                                                                               LEFT JOIN (SELECT tblThread.BoardID, tblThreadPost.MessageID FROM tblThread INNER JOIN tblThreadPost ON tblThread.ThreadID=tblThreadPost.ThreadID WHERE tblThread.BoardID=?) AS temp1 ON tblMessage.MessageID=temp1.MessageID \\r
+                                                                                               WHERE tblMessageBoard.BoardID=? AND temp1.BoardID IS NULL;");\r
 \r
        boardst.Step();\r
        while(boardst.RowReturned())\r
@@ -51,6 +51,7 @@ void DBMaintenanceThread::Do10MinuteMaintenance()
                boardst.Step();\r
 \r
                selectst.Bind(0,boardid);\r
+               selectst.Bind(1,boardid);\r
                selectst.Step();\r
 \r
                while(selectst.RowReturned())\r
@@ -384,14 +385,23 @@ void DBMaintenanceThread::Do1DayMaintenance()
        st.Bind(0,Poco::DateTimeFormatter::format(date,"%Y-%m-%d"));\r
        st.Step();\r
 \r
+       // delete old frost message requests\r
+       date=Poco::Timestamp();\r
+       date-=Poco::Timespan(m_frostmaxdaysbackward,0,0,0,0);\r
+       st=m_db->Prepare("DELETE FROM tblFrostMessageRequests WHERE Day<?;");\r
+       st.Bind(0,Poco::DateTimeFormatter::format(date,"%Y-%m-%d"));\r
+       st.Step();\r
+\r
        // delete tblIdentityTrust for local identities and identities that have been deleted\r
        m_db->Execute("DELETE FROM tblIdentityTrust WHERE LocalIdentityID NOT IN (SELECT LocalIdentityID FROM tblLocalIdentity);");\r
        m_db->Execute("DELETE FROM tblIdentityTrust WHERE IdentityID NOT IN (SELECT IdentityID FROM tblIdentity);");\r
 \r
 \r
+       // cap failure count\r
+       m_db->Execute("UPDATE tblIdentity SET FailureCount=(SELECT OptionValue FROM tblOption WHERE Option='MaxFailureCount') WHERE FailureCount>(SELECT OptionValue FROM tblOption WHERE Option='MaxFailureCount');");\r
        // reduce failure count for each identity\r
        m_db->Execute("UPDATE tblIdentity SET FailureCount=0 WHERE FailureCount<(SELECT OptionValue FROM tblOption WHERE Option='FailureCountReduction');");\r
-       m_db->Execute("UPDATE tblIdentity SET FailureCount=FailureCount-(SELECT OptionValue FROM tblOption WHERE OptionName='FailureCountReduction') WHERE FailureCount>=(SELECT OptionValue FROM tblOption WHERE Option='FailureCountReduction');");\r
+       m_db->Execute("UPDATE tblIdentity SET FailureCount=FailureCount-(SELECT OptionValue FROM tblOption WHERE Option='FailureCountReduction') WHERE FailureCount>=(SELECT OptionValue FROM tblOption WHERE Option='FailureCountReduction');");\r
 \r
        st.Finalize();\r
        findst.Finalize();\r
@@ -420,6 +430,10 @@ void DBMaintenanceThread::run()
        option.Get("MessageDownloadMaxDaysBackward",tempval);\r
        StringFunctions::Convert(tempval,m_messagedownloadmaxdaysbackward);\r
 \r
+       m_frostmaxdaysbackward=5;\r
+       tempval="5";\r
+       option.Get("FrostMessageMaxDaysBackward",tempval);\r
+       StringFunctions::Convert(tempval,m_frostmaxdaysbackward);\r
 \r
        Poco::DateTime now;\r
        int i=0;\r