Added getNetworkId(UserId user, const QString &network) to make the transition to...
[quassel.git] / src / core / storage.h
index e0d24a9..3782ff1 100644 (file)
@@ -22,9 +22,9 @@
 #define _STORAGE_H_
 
 #include <QtCore>
-#include <QtSql>
+#include <QSqlDatabase>
 
-#include "global.h"
+//#include "global.h"
 #include "message.h"
 
 class Storage : public QObject {
@@ -66,26 +66,41 @@ class Storage : public QObject {
      *  \param password The cleartext password for the new user
      *  \return The new user's UserId
      */
-    virtual UserId addUser(QString user, QString password) = 0;
+    virtual UserId addUser(const QString &user, const QString &password) = 0;
 
     //! Update a core user's password.
     /** \param user     The user's id
      *  \param password The user's new password
      */
-    virtual void updateUser(UserId user, QString password) = 0;
+    virtual void updateUser(UserId user, const QString &password) = 0;
+
+    //! Rename a user
+    /** \param user     The user's id
+     *  \param newName  The user's new name
+     */
+    virtual void renameUser(UserId user, const QString &newName) = 0;
 
     //! Validate a username with a given password.
     /** \param user     The username to validate
      *  \param password The user's alleged password
      *  \return A valid UserId if the password matches the username; 0 else
      */
-    virtual UserId validateUser(QString user, QString password) = 0;
+    virtual UserId validateUser(const QString &user, const QString &password) = 0;
 
     //! Remove a core user from storage.
     /** \param user     The userid to delete
      */
     virtual void delUser(UserId user) = 0;
 
+    /* Network handling */
+
+    //! Get the unique NetworkId of the network for a user.
+    /** \param user    The core user who owns this buffername
+     *  \param network The network name
+     *  \return The BufferId corresponding to the given network and buffer name, or 0 if not found
+     */
+    virtual uint getNetworkId(UserId user, const QString &network) = 0;
+
     /* Buffer handling */
 
     //! Get the unique BufferId for the given combination of network and buffername for a user.
@@ -94,7 +109,7 @@ class Storage : public QObject {
      *  \param buffer  The buffer name (if empty, the net's status buffer is returned)
      *  \return The BufferId corresponding to the given network and buffer name, or 0 if not found
      */
-    virtual BufferId getBufferId(UserId user, QString network, QString buffer = "") = 0;
+    virtual BufferId getBufferId(UserId user, const QString &network, const QString &buffer = "") = 0;
 
     //! Request a list of all buffers known to a user since a certain point in time.
     /** This method is used to get a list of all buffers we have stored a backlog from.
@@ -147,8 +162,14 @@ class Storage : public QObject {
     virtual void importOldBacklog() = 0;
 
   signals:
-    //! Sent if a new BufferId is created, or an existing one changed somehow.
+    //! Sent when a new BufferId is created, or an existing one changed somehow.
     void bufferIdUpdated(BufferId);
+    //! Sent when a new user has been added
+    void userAdded(UserId, const QString &username);
+    //! Sent when a user has been renamed
+    void userRenamed(UserId, const QString &newname);
+    //! Sent when a user has been removed
+    void userRemoved(UserId);
 
   public:
     /* Exceptions */
@@ -158,7 +179,7 @@ class Storage : public QObject {
     // Old stuff, just for importing old file-based data
     void initBackLogOld(UserId id);
 
-    QSqlDatabase logDb;
+    QSqlDatabase logDb; // FIXME this does not belong in the base class!
       
     bool backLogEnabledOld;
     QDir backLogDir;