[Server] Create the main database interface through a virtual factory (#7861)

This commit is contained in:
BruebachL 2026-11-10 12:16:34 +01:00 • committed by GitHub
parent c4ac80e282
commit 3a1238a467
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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