diff --git a/lobby/LobbyDatabase.cpp b/lobby/LobbyDatabase.cpp index 3dd6ca607..8b893c8c6 100644 --- a/lobby/LobbyDatabase.cpp +++ b/lobby/LobbyDatabase.cpp @@ -33,8 +33,7 @@ void LobbyDatabase::createTables() description TEXT NOT NULL DEFAULT '', status INTEGER NOT NULL DEFAULT 0, playerLimit INTEGER NOT NULL, - creationTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - mods TEXT NOT NULL DEFAULT '[]' + creationTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ); )"; @@ -85,26 +84,32 @@ void LobbyDatabase::createTables() void LobbyDatabase::upgradeDatabase() { auto getDatabaseVersionStatement = database->prepare(R"( - PRAGMA schema.user_version + PRAGMA user_version )"); - auto setDatabaseVersionStatement = database->prepare(R"( - PRAGMA schema.user_version = ? + auto upgradeDatabaseVersionStatement = database->prepare(R"( + PRAGMA user_version = 10501 )"); int databaseVersion; getDatabaseVersionStatement->execute(); getDatabaseVersionStatement->getColumns(databaseVersion); + getDatabaseVersionStatement->reset(); if (databaseVersion < 10501) { database->prepare(R"( ALTER TABLE gameRooms - ADD COLUMN version TEXT NOT NULL DEFAULT '' ADD COLUMN mods TEXT NOT NULL DEFAULT '{}' )")->execute(); - setDatabaseVersionStatement->executeOnce(10501); + database->prepare(R"( + ALTER TABLE gameRooms + ADD COLUMN version TEXT NOT NULL DEFAULT '' + )")->execute(); + + upgradeDatabaseVersionStatement->execute(); + upgradeDatabaseVersionStatement->reset(); } } @@ -260,7 +265,7 @@ void LobbyDatabase::prepareStatements() )"); getActiveGameRoomsStatement = database->prepare(R"( - SELECT roomID, hostAccountID, displayName, description, status, playerLimit, mods, strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',gr.creationTime) AS secondsElapsed + SELECT roomID, hostAccountID, displayName, description, status, playerLimit, version, mods, strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',gr.creationTime) AS secondsElapsed FROM gameRooms gr LEFT JOIN accounts a ON gr.hostAccountID = a.accountID WHERE status IN (1, 2, 3)