~ubuntu-branches/debian/experimental/quassel/experimental

« back to all changes in this revision

Viewing changes to src/core/sqlitestorage.h

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Mueller
  • Date: 2009-10-05 23:13:06 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20091005231306-ngiajv5r0gbxjfoq
Tags: 0.5.0~rc2-1
* New upstream release (rc2)
* Make puiparts happy (closes: #538182)
* manageusers.py added (closes: #549296)

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
  SqliteStorage(QObject *parent = 0);
35
35
  virtual ~SqliteStorage();
36
36
 
 
37
  virtual AbstractSqlMigrationReader *createMigrationReader();
 
38
 
37
39
public slots:
38
40
  /* General */
39
41
 
40
42
  bool isAvailable() const;
41
43
  QString displayName() const;
 
44
  virtual inline QStringList setupKeys() const { return QStringList(); }
 
45
  virtual inline QVariantMap setupDefaults() const { return QVariantMap(); }
42
46
  QString description() const;
43
47
 
44
48
  // TODO: Add functions for configuring the backlog handling, i.e. defining auto-cleanup settings etc
45
49
 
46
50
  /* User handling */
47
 
 
48
51
  virtual UserId addUser(const QString &user, const QString &password);
49
 
  virtual void updateUser(UserId user, const QString &password);
 
52
  virtual bool updateUser(UserId user, const QString &password);
50
53
  virtual void renameUser(UserId user, const QString &newName);
51
54
  virtual UserId validateUser(const QString &user, const QString &password);
 
55
  virtual UserId getUserId(const QString &username);
52
56
  virtual UserId internalUser();
53
57
  virtual void delUser(UserId user);
54
58
  virtual void setUserSetting(UserId userId, const QString &settingName, const QVariant &data);
78
82
  virtual void setAwayMessage(UserId user, NetworkId networkId, const QString &awayMsg);
79
83
  virtual QString userModes(UserId user, NetworkId networkId);
80
84
  virtual void setUserModes(UserId user, NetworkId networkId, const QString &userModes);
81
 
  
 
85
 
82
86
  /* Buffer handling */
83
87
  virtual BufferInfo bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer = "", bool create = true);
84
88
  virtual BufferInfo getBufferInfo(UserId user, const BufferId &bufferId);
91
95
  virtual QHash<BufferId, MsgId> bufferLastSeenMsgIds(UserId user);
92
96
 
93
97
  /* Message handling */
94
 
 
95
 
  virtual MsgId logMessage(Message msg);
 
98
  virtual bool logMessage(Message &msg);
 
99
  virtual bool logMessages(MessageList &msgs);
96
100
  virtual QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1);
97
101
  virtual QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1);
98
102
 
99
103
protected:
 
104
  inline virtual void setConnectionProperties(const QVariantMap & /* properties */) {}
100
105
  inline virtual QString driverName() { return "QSQLITE"; }
101
106
  inline virtual QString databaseName() { return backlogFile(); }
102
107
  virtual int installedSchemaVersion();
106
111
 
107
112
private:
108
113
  static QString backlogFile();
109
 
  bool isValidNetwork(UserId user, const NetworkId &networkId);
110
 
  bool isValidBuffer(const UserId &user, const BufferId &bufferId);
111
 
  NetworkId getNetworkId(UserId user, const QString &network);
112
 
  void createBuffer(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer);
 
114
  void bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info);
 
115
  void bindServerInfo(QSqlQuery &query, const Network::Server &server);
113
116
 
 
117
  inline void lockForRead() { _dbLock.lockForRead(); }
 
118
  inline void lockForWrite() { _dbLock.lockForWrite(); }
 
119
  inline void unlock() { _dbLock.unlock(); }
 
120
  QReadWriteLock _dbLock;
114
121
  static int _maxRetryCount;
115
122
};
116
123
 
 
124
// ========================================
 
125
//  SqliteMigration
 
126
// ========================================
 
127
class SqliteMigrationReader : public SqliteStorage, public AbstractSqlMigrationReader {
 
128
  Q_OBJECT
 
129
 
 
130
public:
 
131
  SqliteMigrationReader();
 
132
 
 
133
  virtual bool readMo(QuasselUserMO &user);
 
134
  virtual bool readMo(SenderMO &sender);
 
135
  virtual bool readMo(IdentityMO &identity);
 
136
  virtual bool readMo(IdentityNickMO &identityNick);
 
137
  virtual bool readMo(NetworkMO &network);
 
138
  virtual bool readMo(BufferMO &buffer);
 
139
  virtual bool readMo(BacklogMO &backlog);
 
140
  virtual bool readMo(IrcServerMO &ircserver);
 
141
  virtual bool readMo(UserSettingMO &userSetting);
 
142
 
 
143
  virtual bool prepareQuery(MigrationObject mo);
 
144
 
 
145
  inline int stepSize() { return 50000; }
 
146
 
 
147
protected:
 
148
  virtual inline bool transaction() { return logDb().transaction(); }
 
149
  virtual inline void rollback() { logDb().rollback(); }
 
150
  virtual inline bool commit() { return logDb().commit(); }
 
151
 
 
152
private:
 
153
  void setMaxId(MigrationObject mo);
 
154
  int _maxId;
 
155
};
 
156
 
 
157
inline AbstractSqlMigrationReader *SqliteStorage::createMigrationReader() {
 
158
  return new SqliteMigrationReader();
 
159
}
 
160
 
117
161
#endif