#include "../include/threadbuilder.h"\r
#include "../include/messagethread.h"\r
\r
+#include "../include/dbsetup.h"\r
+#include "../include/stringfunctions.h"\r
+\r
const bool ThreadBuilder::Build(const long messageid, const long boardid, const bool bydate)\r
{\r
int count=0;\r
int threadid=-1;\r
- MessageThread mt;\r
+ MessageThread mt(m_db);\r
std::vector<MessageThread::threadnode> m_threadmessages;\r
\r
mt.Load(messageid,boardid,bydate);\r
m_threadmessages=mt.GetNodes();\r
\r
- // find threadid of this thread if it already exists in a thread\r
+ m_db->Execute("BEGIN;");\r
+\r
+ // find threadid of this mesage if it already exists in a thread\r
SQLite3DB::Statement st=m_db->Prepare("SELECT tblThread.ThreadID FROM tblThread INNER JOIN tblThreadPost ON tblThread.ThreadID=tblThreadPost.ThreadID WHERE tblThread.BoardID=? AND tblThreadPost.MessageID=?;");\r
st.Bind(0,boardid);\r
st.Bind(1,messageid);\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
- 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
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
+ st4.Bind(0,threadid);\r
+ st4.Bind(1,(*i).m_messageid);\r
+ st4.Bind(2,count);\r
+ st4.Step();\r
+ st4.Reset();\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
+ m_db->Execute("COMMIT;");\r
+\r
return true;\r
\r
}\r