X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Fthreadbuilder.cpp;fp=src%2Fthreadbuilder.cpp;h=1a6a764872aacc865dbc2e0f2e4fee0548f0db7e;hp=175a34a3d44e5491e1f40379b7bed3db0bebad66;hb=30c26abc85a6331fecdcb6b03813710bfbc63d3f;hpb=56f67ecca96efc7b72d03c95c8c42cfb66e31468 diff --git a/src/threadbuilder.cpp b/src/threadbuilder.cpp index 175a34a..1a6a764 100644 --- a/src/threadbuilder.cpp +++ b/src/threadbuilder.cpp @@ -1,6 +1,10 @@ #include "../include/threadbuilder.h" #include "../include/messagethread.h" +#include "../include/dbsetup.h" +#include "../include/stringfunctions.h" +#include "../include/option.h" + const bool ThreadBuilder::Build(const long messageid, const long boardid, const bool bydate) { int count=0; @@ -8,6 +12,20 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const MessageThread mt; std::vector m_threadmessages; + std::string ll=""; + Option::Instance()->Get("LogLevel",ll); + + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + std::string messageidstr=""; + std::string boardidstr=""; + StringFunctions::Convert(messageid,messageidstr); + StringFunctions::Convert(boardid,boardidstr); + m_log->trace("ThreadBuilder::Build start TestDBIntegrity("+messageidstr+","+boardidstr+") returned "+dbres); + } + mt.Load(messageid,boardid,bydate); m_threadmessages=mt.GetNodes(); @@ -50,22 +68,52 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const } } + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + if(dbres!="ok") + { + m_log->trace("ThreadBuilder::Build middle TestDBIntegrity returned "+dbres); + } + } + if(m_threadmessages.size()>0) { - st=m_db->Prepare("UPDATE tblThread SET FirstMessageID=?, LastMessageID=? WHERE ThreadID=?;"); - st.Bind(0,m_threadmessages[0].m_messageid); - st.Bind(1,m_threadmessages[m_threadmessages.size()-1].m_messageid); - st.Bind(2,threadid); - st.Step(); + SQLite3DB::Statement st2=m_db->Prepare("UPDATE tblThread SET FirstMessageID=?, LastMessageID=? WHERE ThreadID=?;"); + st2.Bind(0,m_threadmessages[0].m_messageid); + st2.Bind(1,m_threadmessages[m_threadmessages.size()-1].m_messageid); + st2.Bind(2,threadid); + st2.Step(); + + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + if(dbres!="ok") + { + m_log->trace("ThreadBuilder::Build after thread update TestDBIntegrity returned "+dbres); + } + } - st=m_db->Prepare("DELETE FROM tblThreadPost WHERE ThreadID=?;"); - st.Bind(0,threadid); - st.Step(); + SQLite3DB::Statement st3=m_db->Prepare("DELETE FROM tblThreadPost WHERE ThreadID=?;"); + st3.Bind(0,threadid); + st3.Step(); + + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + if(dbres!="ok") + { + m_log->trace("ThreadBuilder::Build after thread post delete TestDBIntegrity returned "+dbres); + } + } SQLite3DB::Statement deleteotherst=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID IN (SELECT tblThread.ThreadID FROM tblThreadPost INNER JOIN tblThread ON tblThreadPost.ThreadID=tblThread.ThreadID WHERE tblThread.BoardID=? AND tblThreadPost.MessageID=?);"); count=0; - st=m_db->Prepare("INSERT INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);"); + SQLite3DB::Statement st4=m_db->Prepare("INSERT INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);"); for(std::vector::const_iterator i=m_threadmessages.begin(); i!=m_threadmessages.end(); i++, count++) { deleteotherst.Bind(0,boardid); @@ -73,18 +121,47 @@ const bool ThreadBuilder::Build(const long messageid, const long boardid, const deleteotherst.Step(); deleteotherst.Reset(); - st.Bind(0,threadid); - st.Bind(1,(*i).m_messageid); - st.Bind(2,count); - st.Step(); - st.Reset(); + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + if(dbres!="ok") + { + m_log->trace("ThreadBuilder::Build after delete other TestDBIntegrity returned "+dbres); + } + } + + st4.Bind(0,threadid); + st4.Bind(1,(*i).m_messageid); + st4.Bind(2,count); + st4.Step(); + st4.Reset(); + + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + if(dbres!="ok") + { + m_log->trace("ThreadBuilder::Build after insert TestDBIntegrity returned "+dbres); + } + } } } else { - st=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID=?;"); - st.Bind(0,threadid); - st.Step(); + SQLite3DB::Statement st2=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID=?;"); + st2.Bind(0,threadid); + st2.Step(); + + m_log->trace("ThreadBuilder::Build deleted thread"); + } + + // TODO - remove after corruption issue fixed + if(ll=="8") + { + std::string dbres=TestDBIntegrity(); + m_log->trace("ThreadBuilder::Build end TestDBIntegrity returned "+dbres); } return true;