#include "../include/threadbuilder.h"\r
#include "../include/messagethread.h"\r
\r
+#include "../include/dbsetup.h"\r
+#include "../include/stringfunctions.h"\r
+#include "../include/option.h"\r
+\r
const bool ThreadBuilder::Build(const long messageid, const long boardid, const bool bydate)\r
{\r
int count=0;\r
MessageThread mt;\r
std::vector<MessageThread::threadnode> m_threadmessages;\r
\r
+ std::string ll="";\r
+ Option::Instance()->Get("LogLevel",ll);\r
+\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ std::string messageidstr="";\r
+ std::string boardidstr="";\r
+ StringFunctions::Convert(messageid,messageidstr);\r
+ StringFunctions::Convert(boardid,boardidstr);\r
+ m_log->trace("ThreadBuilder::Build start TestDBIntegrity("+messageidstr+","+boardidstr+") returned "+dbres);\r
+ }\r
+\r
mt.Load(messageid,boardid,bydate);\r
m_threadmessages=mt.GetNodes();\r
\r
}\r
}\r
\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ if(dbres!="ok")\r
+ {\r
+ m_log->trace("ThreadBuilder::Build middle TestDBIntegrity returned "+dbres);\r
+ }\r
+ }\r
+\r
if(m_threadmessages.size()>0)\r
{\r
- st=m_db->Prepare("UPDATE tblThread SET FirstMessageID=?, LastMessageID=? WHERE ThreadID=?;");\r
- st.Bind(0,m_threadmessages[0].m_messageid);\r
- st.Bind(1,m_threadmessages[m_threadmessages.size()-1].m_messageid);\r
- st.Bind(2,threadid);\r
- st.Step();\r
+ SQLite3DB::Statement st2=m_db->Prepare("UPDATE tblThread SET FirstMessageID=?, LastMessageID=? WHERE ThreadID=?;");\r
+ st2.Bind(0,m_threadmessages[0].m_messageid);\r
+ st2.Bind(1,m_threadmessages[m_threadmessages.size()-1].m_messageid);\r
+ st2.Bind(2,threadid);\r
+ st2.Step();\r
+\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ if(dbres!="ok")\r
+ {\r
+ m_log->trace("ThreadBuilder::Build after thread update TestDBIntegrity returned "+dbres);\r
+ }\r
+ }\r
\r
- st=m_db->Prepare("DELETE FROM tblThreadPost WHERE ThreadID=?;");\r
- st.Bind(0,threadid);\r
- st.Step();\r
+ SQLite3DB::Statement st3=m_db->Prepare("DELETE FROM tblThreadPost WHERE ThreadID=?;");\r
+ st3.Bind(0,threadid);\r
+ st3.Step();\r
+\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ if(dbres!="ok")\r
+ {\r
+ m_log->trace("ThreadBuilder::Build after thread post delete TestDBIntegrity returned "+dbres);\r
+ }\r
+ }\r
\r
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=?);");\r
\r
count=0;\r
- st=m_db->Prepare("INSERT INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);");\r
+ SQLite3DB::Statement st4=m_db->Prepare("INSERT INTO tblThreadPost(ThreadID,MessageID,PostOrder) VALUES(?,?,?);");\r
for(std::vector<MessageThread::threadnode>::const_iterator i=m_threadmessages.begin(); i!=m_threadmessages.end(); i++, count++)\r
{\r
deleteotherst.Bind(0,boardid);\r
deleteotherst.Step();\r
deleteotherst.Reset();\r
\r
- st.Bind(0,threadid);\r
- st.Bind(1,(*i).m_messageid);\r
- st.Bind(2,count);\r
- st.Step();\r
- st.Reset();\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ if(dbres!="ok")\r
+ {\r
+ m_log->trace("ThreadBuilder::Build after delete other TestDBIntegrity returned "+dbres);\r
+ }\r
+ }\r
+\r
+ st4.Bind(0,threadid);\r
+ st4.Bind(1,(*i).m_messageid);\r
+ st4.Bind(2,count);\r
+ st4.Step();\r
+ st4.Reset();\r
+\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ if(dbres!="ok")\r
+ {\r
+ m_log->trace("ThreadBuilder::Build after insert TestDBIntegrity returned "+dbres);\r
+ }\r
+ }\r
}\r
}\r
else\r
{\r
- st=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID=?;");\r
- st.Bind(0,threadid);\r
- st.Step();\r
+ SQLite3DB::Statement st2=m_db->Prepare("DELETE FROM tblThread WHERE ThreadID=?;");\r
+ st2.Bind(0,threadid);\r
+ st2.Step();\r
+\r
+ m_log->trace("ThreadBuilder::Build deleted thread");\r
+ }\r
+\r
+ // TODO - remove after corruption issue fixed\r
+ if(ll=="8")\r
+ {\r
+ std::string dbres=TestDBIntegrity();\r
+ m_log->trace("ThreadBuilder::Build end TestDBIntegrity returned "+dbres);\r
}\r
\r
return true;\r