diff --git a/servatrice/src/servatrice.cpp b/servatrice/src/servatrice.cpp index 5f810fd62..5576ef1d3 100644 --- a/servatrice/src/servatrice.cpp +++ b/servatrice/src/servatrice.cpp @@ -314,6 +314,11 @@ static std::optional roomChannelAccessFromK return std::nullopt; } +Server_DatabaseInterface *Servatrice::createMainDatabaseInterface() +{ + return new Servatrice_DatabaseInterface(-1, this); +} + bool Servatrice::initServer() { @@ -397,7 +402,11 @@ bool Servatrice::initServer() } else { databaseType = DatabaseNone; } - servatriceDatabaseInterface = new Servatrice_DatabaseInterface(-1, this); + servatriceDatabaseInterface = createMainDatabaseInterface(); + if (!servatriceDatabaseInterface) { + qCCritical(ServatriceLog) << "Failed to create the database interface; refusing to start."; + return false; + } setDatabaseInterface(servatriceDatabaseInterface); if (databaseType != DatabaseNone) { diff --git a/servatrice/src/servatrice.h b/servatrice/src/servatrice.h index 076bb026e..5c22fdea8 100644 --- a/servatrice/src/servatrice.h +++ b/servatrice/src/servatrice.h @@ -163,6 +163,8 @@ private slots: protected: void doSendIslMessage(const IslMessage &msg, int _serverId) override; + /** @brief Creates the database interface the server itself runs on; the shipped server uses MySQL. */ + virtual Server_DatabaseInterface *createMainDatabaseInterface(); private: enum DatabaseType