Fix license headers: Quassel IRC Team -> Quassel Project, 2007 -> 2008
[quassel.git] / src / core / sqlitestorage.h
index 9b60aae..b661aed 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel Team                             *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 #ifndef _SQLITESTORAGE_H_
 #define _SQLITESTORAGE_H_
 
-#include <QtCore>
 #include <QCryptographicHash>
 
-#include "global.h"
 #include "storage.h"
 
+class QSqlQuery;
+
 class SqliteStorage : public Storage {
   Q_OBJECT
 
@@ -34,50 +34,51 @@ class SqliteStorage : public Storage {
     SqliteStorage();
     virtual ~SqliteStorage();
 
-    static void init();
-
+  public slots:
     /* General */
 
     static bool isAvailable();
     static QString displayName();
+    virtual bool setup(const QVariantMap &settings = QVariantMap());
+    virtual bool init(const QVariantMap &settings = QVariantMap());
 
     // TODO: Add functions for configuring the backlog handling, i.e. defining auto-cleanup settings etc
 
     /* User handling */
 
-    virtual UserId addUser(QString user, QString password);
-    virtual void updateUser(UserId user, QString password);
-    virtual UserId validateUser(QString user, QString password);
+    virtual UserId addUser(const QString &user, const QString &password);
+    virtual void updateUser(UserId user, const QString &password);
+    virtual void renameUser(UserId user, const QString &newName);
+    virtual UserId validateUser(const QString &user, const QString &password);
     virtual void delUser(UserId user);
 
-    /* Buffer handling */
+    /* Network handling */
+    virtual uint getNetworkId(UserId user, const QString &network);
 
-    virtual BufferId getBufferId(UserId user, QString network, QString buffer = "");
-    virtual QList<BufferId> requestBuffers(UserId user, QDateTime since = QDateTime());
+    /* Buffer handling */
+    virtual BufferInfo getBufferInfo(UserId user, const QString &network, const QString &buffer = "");
+    virtual QList<BufferInfo> requestBuffers(UserId user, QDateTime since = QDateTime());
 
     /* Message handling */
 
     virtual MsgId logMessage(Message msg);
-    virtual QList<Message> requestMsgs(BufferId buffer, int lastmsgs = -1, int offset = -1);
-    virtual QList<Message> requestMsgs(BufferId buffer, QDateTime since, int offset = -1);
-    virtual QList<Message> requestMsgRange(BufferId buffer, int first, int last);
-
-  public slots:
-    //! This is just for importing the old file-based backlog */
-    /** This slot needs to be implemented in the storage backends.
-     *  It should first prepare (delete?) the database, then call initBackLogOld(UserId id).
-     *  If the importing was successful, backLogEnabledOld will be true afterwards.
-     */
-    void importOldBacklog();
+    virtual QList<Message> requestMsgs(BufferInfo buffer, int lastmsgs = -1, int offset = -1);
+    virtual QList<Message> requestMsgs(BufferInfo buffer, QDateTime since, int offset = -1);
+    virtual QList<Message> requestMsgRange(BufferInfo buffer, int first, int last);
 
   signals:
-    void bufferIdUpdated(BufferId);
+    void bufferInfoUpdated(BufferInfo);
 
   protected:
 
   private:
-    void initDb();
-    void createBuffer(UserId user, QString network, QString buffer);
+    static QString backlogFile(bool createPath = false);
+    
+    void createBuffer(UserId user, const QString &network, const QString &buffer);
+    bool watchQuery(QSqlQuery *query);
+
+    QSqlDatabase logDb;
+
     QSqlQuery *logMessageQuery;
     QSqlQuery *addSenderQuery;
     QSqlQuery *getLastMessageIdQuery;
@@ -88,8 +89,7 @@ class SqliteStorage : public Storage {
     QSqlQuery *requestMsgRangeQuery;
     QSqlQuery *createNetworkQuery;
     QSqlQuery *createBufferQuery;
-    QSqlQuery *getBufferIdQuery;
+    QSqlQuery *getBufferInfoQuery;
 };
 
-
 #endif