X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fboard.cpp;h=ed8e8692f7b24f256f54b4ea6b9cccbc9ddab2dc;hb=c0ebc7b53a977885ebc2d3a679c586ae20c0bc4a;hp=e429c6c1bc745871baec0d7b884cf0dd477a6f47;hpb=dec33c63afafabf83c3039e916725cac6faef9b3;p=fms.git diff --git a/src/board.cpp b/src/board.cpp index e429c6c..ed8e869 100644 --- a/src/board.cpp +++ b/src/board.cpp @@ -58,7 +58,9 @@ const bool Board::Load(const long boardid) m_messagecount=0; m_addedmethod=""; - SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardID=?;"); + // Optimize query by not using vwBoardStats + //SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardID=?;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, IFNULL(MAX(MessageID),'0') AS HighMessageID, IFNULL(MIN(MessageID),'0') AS LowMessageID, COUNT(MessageID) AS MessageCount, SaveReceivedMessages, AddedMethod FROM tblBoard LEFT JOIN tblMessageBoard ON tblBoard.BoardID=tblMessageBoard.BoardID WHERE tblBoard.BoardID=? AND (MessageID IS NULL OR MessageID>=0);"); st.Bind(0,boardid); st.Step(); @@ -105,21 +107,6 @@ const bool Board::Load(const long boardid) const bool Board::Load(const std::string &boardname) // same as loading form boardid - but using name { - /* - SQLite3DB::Statement st=m_db->Prepare("SELECT BoardID FROM tblBoard WHERE BoardName=?;"); - st.Bind(0,boardname); - st.Step(); - if(st.RowReturned()) - { - int tempint; - st.ResultInt(0,tempint); - return Load(tempint); - } - else - { - return false; - } - */ // clear current values m_boardid=-1; @@ -132,7 +119,9 @@ const bool Board::Load(const std::string &boardname) // same as loading form bo int tempint=-1; m_addedmethod=""; - SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, tblBoard.BoardID, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardName=?;"); + // Optimize query by not using vwBoardStats + //SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, tblBoard.BoardID, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardName=?;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, IFNULL(MAX(MessageID),'0') AS HighMessageID, IFNULL(MIN(MessageID),'0') AS LowMessageID, COUNT(MessageID) AS MessageCount, SaveReceivedMessages, tblBoard.BoardID, AddedMethod FROM tblBoard LEFT JOIN tblMessageBoard ON tblBoard.BoardID=tblMessageBoard.BoardID WHERE tblBoard.BoardName=? AND (MessageID IS NULL OR MessageID>=0);"); st.Bind(0,boardname); st.Step(); @@ -181,7 +170,6 @@ const bool Board::Load(const std::string &boardname) // same as loading form bo void Board::SetDateFromString(const std::string &datestring) { - // break out date created - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":" int tzdiff=0; if(Poco::DateTimeParser::tryParse(datestring,m_datecreated,tzdiff)==false) {