From 3a1238a467eb22dd1d47941cc3ec4ae511e7ec4f Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Tue, 10 Nov 2026 12:16:34 +0100 Subject: [PATCH] [Server] Create the main database interface through a virtual factory (#7861) --- 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