- virtual bool init(const QVariantMap &settings = QVariantMap());
- inline virtual void sync() {};
-
- QSqlDatabase logDb();
-
- QString queryString(const QString &queryName, int version);
- inline QString queryString(const QString &queryName) { return queryString(queryName, 0); }
-
- QStringList setupQueries();
- bool setup(const QVariantMap &settings = QVariantMap());
-
- QStringList upgradeQueries(int ver);
- bool upgradeDb();
-
- bool watchQuery(QSqlQuery &query);
-
- int schemaVersion();
- virtual int installedSchemaVersion() { return -1; };
-
- virtual QString driverName() = 0;
- inline virtual QString hostName() { return QString(); }
- virtual QString databaseName() = 0;
- inline virtual QString userName() { return QString(); }
- inline virtual QString password() { return QString(); }
+ inline virtual void sync() {};
+
+ QSqlDatabase logDb();
+
+ QString queryString(const QString &queryName, int version);
+ inline QString queryString(const QString &queryName) { return queryString(queryName, 0); }
+
+ QStringList setupQueries();
+
+ QStringList upgradeQueries(int ver);
+ bool upgradeDb();
+
+ bool watchQuery(QSqlQuery &query);
+
+ int schemaVersion();
+ virtual int installedSchemaVersion() { return -1; };
+ virtual bool updateSchemaVersion(int newVersion) = 0;
+ virtual bool setupSchemaVersion(int version) = 0;
+
+ virtual void setConnectionProperties(const QVariantMap &properties) = 0;
+ virtual QString driverName() = 0;
+ inline virtual QString hostName() { return QString(); }
+ inline virtual int port() { return -1; }
+ virtual QString databaseName() = 0;
+ inline virtual QString userName() { return QString(); }
+ inline virtual QString password() { return QString(); }
+
+ //! Initialize db specific features on connect
+ /** This is called every time a connection to a specific SQL backend is established
+ * the default implementation does nothing.
+ *
+ * When reimplementing this method, don't use logDB() inside this function as
+ * this would cause as we're just about to initialize that DB connection.
+ */
+ inline virtual bool initDbSession(QSqlDatabase & /* db */) { return true; }