1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Fixed database version upgrade

This commit is contained in:
Ivan Savenko
2024-04-16 16:30:35 +03:00
parent 1840666327
commit ff1aa4407c

View File

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