[Server] Create the main database interface through a virtual factory

This commit is contained in:
Lukas Brübach 2026-11-10 02:56:56 +01:00
parent 4d7c5218e9
commit 5565f21b39
2 changed files with 12 additions and 1 deletions

View file

@ -314,6 +314,11 @@ static std::optional<ServerInfo_RoomChannel::AccessLevel> 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) {

View file

@ -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