From 5565f21b394d69945230c1458c2ece3850f5e192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= <44814898+BruebachL@users.noreply.github.com> Date: Tue, 10 Nov 2026 02:56:56 +0100 Subject: [PATCH] [Server] Create the main database interface through a virtual factory --- servatrice/src/servatrice.cpp | 11 ++++++++++- servatrice/src/servatrice.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) 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