highlight respects now word boundaries. thx int
[quassel.git] / src / core / sqlitestorage.cpp
index 29fb9eb..900a193 100644 (file)
@@ -33,17 +33,19 @@ SqliteStorage::SqliteStorage(QObject *parent)
 SqliteStorage::~SqliteStorage() {
 }
 
-bool SqliteStorage::isAvailable() {
+bool SqliteStorage::isAvailable() const {
   if(!QSqlDatabase::isDriverAvailable("QSQLITE")) return false;
   return true;
 }
 
-QString SqliteStorage::displayName() {
+QString SqliteStorage::displayName() const {
   return QString("SQLite");
 }
 
-QString SqliteStorage::engineName() {
-  return SqliteStorage::displayName();
+QString SqliteStorage::description() const {
+  return tr("SQLite is a file-based database engine that does not require any setup. It is suitable for small and medium-sized "
+            "databases that do not require access via network. Use SQLite if your Quassel Core should store its data on the same machine "
+            "it is running on, and if you only expect a few users to use your core.");
 }
 
 int SqliteStorage::installedSchemaVersion() {
@@ -228,7 +230,7 @@ QList<BufferInfo> SqliteStorage::requestBuffers(UserId user, QDateTime since) {
 MsgId SqliteStorage::logMessage(Message msg) {
   QSqlQuery *logMessageQuery = cachedQuery("insert_message");
   logMessageQuery->bindValue(":time", msg.timestamp().toTime_t());
-  logMessageQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
+  logMessageQuery->bindValue(":bufferid", msg.bufferInfo().bufferId().toInt());
   logMessageQuery->bindValue(":type", msg.type());
   logMessageQuery->bindValue(":flags", msg.flags());
   logMessageQuery->bindValue(":sender", msg.sender());
@@ -252,7 +254,7 @@ MsgId SqliteStorage::logMessage(Message msg) {
 
   QSqlQuery *getLastMessageIdQuery = cachedQuery("select_lastMessage");
   getLastMessageIdQuery->bindValue(":time", msg.timestamp().toTime_t());
-  getLastMessageIdQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
+  getLastMessageIdQuery->bindValue(":bufferid", msg.bufferInfo().bufferId().toInt());
   getLastMessageIdQuery->bindValue(":type", msg.type());
   getLastMessageIdQuery->bindValue(":sender", msg.sender());
   getLastMessageIdQuery->exec();
@@ -260,7 +262,7 @@ MsgId SqliteStorage::logMessage(Message msg) {
   if(getLastMessageIdQuery->first()) {
     return getLastMessageIdQuery->value(0).toInt();
   } else { // somethin went wrong... :(
-    qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.buffer().uid() << msg.type() << msg.sender();
+    qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.bufferInfo().bufferId() << msg.type() << msg.sender();
     Q_ASSERT(false);
     return 0;
   }
@@ -269,28 +271,30 @@ MsgId SqliteStorage::logMessage(Message msg) {
 QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int offset) {
   QList<Message> messagelist;
   // we have to determine the real offset first
-  QSqlQuery *requestMsgsOffsetQuery = cachedQuery("select_messagesOffset");
-  requestMsgsOffsetQuery->bindValue(":bufferid", buffer.uid().toInt());
-  requestMsgsOffsetQuery->bindValue(":messageid", offset);
-  requestMsgsOffsetQuery->exec();
-  requestMsgsOffsetQuery->first();
-  offset = requestMsgsOffsetQuery->value(0).toInt();
+  QSqlQuery *offsetQuery = cachedQuery("select_messagesOffset");
+  offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt());
+  offsetQuery->bindValue(":messageid", offset);
+  offsetQuery->exec();
+  offsetQuery->first();
+  offset = offsetQuery->value(0).toInt();
 
   // now let's select the messages
-  QSqlQuery *requestMsgsQuery = cachedQuery("select_messages");
-  requestMsgsQuery->bindValue(":bufferid", buffer.uid().toInt());
-  requestMsgsQuery->bindValue(":bufferid2", buffer.uid().toInt());  // Qt can't handle the same placeholder used twice
-  requestMsgsQuery->bindValue(":limit", lastmsgs);
-  requestMsgsQuery->bindValue(":offset", offset);
-  requestMsgsQuery->exec();
-  while(requestMsgsQuery->next()) {
-    Message msg(QDateTime::fromTime_t(requestMsgsQuery->value(1).toInt()),
+  QSqlQuery *msgQuery = cachedQuery("select_messages");
+  msgQuery->bindValue(":bufferid", buffer.bufferId().toInt());
+  msgQuery->bindValue(":limit", lastmsgs);
+  msgQuery->bindValue(":offset", offset);
+  msgQuery->exec();
+  
+  watchQuery(msgQuery);
+  
+  while(msgQuery->next()) {
+    Message msg(QDateTime::fromTime_t(msgQuery->value(1).toInt()),
                 buffer,
-                (Message::Type)requestMsgsQuery->value(2).toUInt(),
-                requestMsgsQuery->value(5).toString(),
-                requestMsgsQuery->value(4).toString(),
-                requestMsgsQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgsQuery->value(0).toInt());
+                (Message::Type)msgQuery->value(2).toUInt(),
+                msgQuery->value(5).toString(),
+                msgQuery->value(4).toString(),
+                msgQuery->value(3).toUInt());
+    msg.setMsgId(msgQuery->value(0).toInt());
     messagelist << msg;
   }
   return messagelist;
@@ -300,29 +304,30 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o
 QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, int offset) {
   QList<Message> messagelist;
   // we have to determine the real offset first
-  QSqlQuery *requestMsgsSinceOffsetQuery = cachedQuery("select_messagesSinceOffset");
-  requestMsgsSinceOffsetQuery->bindValue(":bufferid", buffer.uid().toInt());
-  requestMsgsSinceOffsetQuery->bindValue(":since", since.toTime_t());
-  requestMsgsSinceOffsetQuery->exec();
-  requestMsgsSinceOffsetQuery->first();
-  offset = requestMsgsSinceOffsetQuery->value(0).toInt();
+  QSqlQuery *offsetQuery = cachedQuery("select_messagesSinceOffset");
+  offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt());
+  offsetQuery->bindValue(":since", since.toTime_t());
+  offsetQuery->exec();
+  offsetQuery->first();
+  offset = offsetQuery->value(0).toInt();
 
   // now let's select the messages
-  QSqlQuery *requestMsgsSinceQuery = cachedQuery("select_messagesSince");
-  requestMsgsSinceQuery->bindValue(":bufferid", buffer.uid().toInt());
-  requestMsgsSinceQuery->bindValue(":bufferid2", buffer.uid().toInt());
-  requestMsgsSinceQuery->bindValue(":since", since.toTime_t());
-  requestMsgsSinceQuery->bindValue(":offset", offset);
-  requestMsgsSinceQuery->exec();
-
-  while(requestMsgsSinceQuery->next()) {
-    Message msg(QDateTime::fromTime_t(requestMsgsSinceQuery->value(1).toInt()),
+  QSqlQuery *msgQuery = cachedQuery("select_messagesSince");
+  msgQuery->bindValue(":bufferid", buffer.bufferId().toInt());
+  msgQuery->bindValue(":since", since.toTime_t());
+  msgQuery->bindValue(":offset", offset);
+  msgQuery->exec();
+
+  watchQuery(msgQuery);
+  
+  while(msgQuery->next()) {
+    Message msg(QDateTime::fromTime_t(msgQuery->value(1).toInt()),
                 buffer,
-                (Message::Type)requestMsgsSinceQuery->value(2).toUInt(),
-                requestMsgsSinceQuery->value(5).toString(),
-                requestMsgsSinceQuery->value(4).toString(),
-                requestMsgsSinceQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgsSinceQuery->value(0).toInt());
+                (Message::Type)msgQuery->value(2).toUInt(),
+                msgQuery->value(5).toString(),
+                msgQuery->value(4).toString(),
+                msgQuery->value(3).toUInt());
+    msg.setMsgId(msgQuery->value(0).toInt());
     messagelist << msg;
   }
 
@@ -332,20 +337,22 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in
 
 QList<Message> SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int last) {
   QList<Message> messagelist;
-  QSqlQuery *requestMsgRangeQuery = cachedQuery("select_messageRange");
-  requestMsgRangeQuery->bindValue(":bufferid", buffer.uid().toInt());
-  requestMsgRangeQuery->bindValue(":bufferid2", buffer.uid().toInt());
-  requestMsgRangeQuery->bindValue(":firstmsg", first);
-  requestMsgRangeQuery->bindValue(":lastmsg", last);
-
-  while(requestMsgRangeQuery->next()) {
-    Message msg(QDateTime::fromTime_t(requestMsgRangeQuery->value(1).toInt()),
+  QSqlQuery *rangeQuery = cachedQuery("select_messageRange");
+  rangeQuery->bindValue(":bufferid", buffer.bufferId().toInt());
+  rangeQuery->bindValue(":firstmsg", first);
+  rangeQuery->bindValue(":lastmsg", last);
+  rangeQuery->exec();
+
+  watchQuery(rangeQuery);
+  
+  while(rangeQuery->next()) {
+    Message msg(QDateTime::fromTime_t(rangeQuery->value(1).toInt()),
                 buffer,
-                (Message::Type)requestMsgRangeQuery->value(2).toUInt(),
-                requestMsgRangeQuery->value(5).toString(),
-                requestMsgRangeQuery->value(4).toString(),
-                requestMsgRangeQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgRangeQuery->value(0).toInt());
+                (Message::Type)rangeQuery->value(2).toUInt(),
+                rangeQuery->value(5).toString(),
+                rangeQuery->value(4).toString(),
+                rangeQuery->value(3).toUInt());
+    msg.setMsgId(rangeQuery->value(0).toInt());
     messagelist << msg;
   }