浏览代码

Fixed database version upgrade

Ivan Savenko 1 年之前
父节点
当前提交
ff1aa4407c
共有 1 个文件被更改,包括 13 次插入8 次删除
  1. 13 8
      lobby/LobbyDatabase.cpp

+ 13 - 8
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)