version 0.3.22
[fms.git] / src / dbmaintenancethread.cpp
index 0309414..f8c3357 100644 (file)
@@ -20,10 +20,16 @@ DBMaintenanceThread::DBMaintenanceThread()
        m_last1day=Poco::Timestamp();\r
        m_last1day-=Poco::Timespan(0,23,51,0,0);\r
 \r
+       m_deletemessagesolderthan=180;\r
        std::string tempval="180";\r
        Option::Instance()->Get("DeleteMessagesOlderThan",tempval);\r
        StringFunctions::Convert(tempval,m_deletemessagesolderthan);\r
 \r
+       m_messagedownloadmaxdaysbackward=5;\r
+       tempval="5";\r
+       Option::Instance()->Get("MessageDownloadMaxDaysBackward",tempval);\r
+       StringFunctions::Convert(tempval,m_messagedownloadmaxdaysbackward);\r
+\r
 }\r
 \r
 \r
@@ -95,6 +101,9 @@ void DBMaintenanceThread::Do1HourMaintenance()
                st.Step();\r
        }\r
 \r
+       // insert all identities not in trust list already\r
+       m_db->Execute("INSERT INTO tblIdentityTrust(LocalIdentityID,IdentityID) SELECT LocalIdentityID,IdentityID FROM tblLocalIdentity,tblIdentity WHERE LocalIdentityID || '_' || IdentityID NOT IN (SELECT LocalIdentityID || '_' || IdentityID FROM tblIdentityTrust);");\r
+\r
        m_log->debug("PeriodicDBMaintenance::Do1HourMaintenance");\r
 }\r
 \r
@@ -249,10 +258,18 @@ void DBMaintenanceThread::Do1DayMaintenance()
        // delete old messages\r
        date=Poco::Timestamp();\r
        date-=Poco::Timespan(m_deletemessagesolderthan,0,0,0,0);\r
+       m_log->trace("PeriodicDBMaintenance::Do1DayMaintenance deleting messages prior to "+Poco::DateTimeFormatter::format(date,"%Y-%m-%d"));\r
        st=m_db->Prepare("DELETE FROM tblMessage WHERE MessageDate<?;");\r
        st.Bind(0,Poco::DateTimeFormatter::format(date,"%Y-%m-%d"));\r
        st.Step();\r
 \r
+       // delete old message requests\r
+       date=Poco::Timestamp();\r
+       date-=Poco::Timespan(m_messagedownloadmaxdaysbackward,0,0,0,0);\r
+       st=m_db->Prepare("DELETE FROM tblMessageRequests 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