X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fabstractsqlstorage.h;h=e3a64816f9c08b27b4a3abe1a2f7cb429a19046d;hp=bbe4d08140093b0d17910a2c81f8acd2ab3db512;hb=dc2aa39d20b60e7cd8e0ba66ca6c9ed729add008;hpb=b2f681c796855ba0f863eb14b062c5d1a2825df1 diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index bbe4d081..e3a64816 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-07 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -36,16 +36,13 @@ public: protected: virtual bool init(const QVariantMap &settings = QVariantMap()); - virtual void sync(); + inline virtual void sync() {}; QSqlDatabase logDb(); QString queryString(const QString &queryName, int version); inline QString queryString(const QString &queryName) { return queryString(queryName, 0); } - QSqlQuery &cachedQuery(const QString &queryName, int version); - inline QSqlQuery &cachedQuery(const QString &queryName) { return cachedQuery(queryName, 0); } - QStringList setupQueries(); bool setup(const QVariantMap &settings = QVariantMap()); @@ -56,6 +53,8 @@ protected: int schemaVersion(); virtual int installedSchemaVersion() { return -1; }; + virtual bool updateSchemaVersion(int newVersion) = 0; + virtual bool setupSchemaVersion(int version) = 0; virtual QString driverName() = 0; inline virtual QString hostName() { return QString(); } @@ -63,9 +62,6 @@ protected: inline virtual QString userName() { return QString(); } inline virtual QString password() { return QString(); } -signals: - void syncCachedQueries(); - private slots: void connectionDestroyed(); @@ -76,6 +72,9 @@ private: int _nextConnectionId; QMutex _connectionPoolMutex; + // we let a Connection Object manage each actual db connection + // those objects reside in the thread the connection belongs to + // which allows us thread safe termination of a connection class Connection; QHash _connectionPool; }; @@ -87,19 +86,13 @@ class AbstractSqlStorage::Connection : public QObject { Q_OBJECT public: - Connection(const QString &name, AbstractSqlStorage *storage, QObject *parent = 0); + Connection(const QString &name, QObject *parent = 0); ~Connection(); inline QLatin1String name() const { return QLatin1String(_name); } - QSqlQuery &cachedQuery(const QString &queryName, int version); - -public slots: - void syncCachedQueries(); private: QByteArray _name; - QHash, QSqlQuery *> _queryCache; - AbstractSqlStorage *_storageEngine; }; #endif