浏览代码

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 '',
 			description TEXT NOT NULL DEFAULT '',
 			status INTEGER NOT NULL DEFAULT 0,
 			status INTEGER NOT NULL DEFAULT 0,
 			playerLimit INTEGER NOT NULL,
 			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()
 void LobbyDatabase::upgradeDatabase()
 {
 {
 	auto getDatabaseVersionStatement = database->prepare(R"(
 	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;
 	int databaseVersion;
 	getDatabaseVersionStatement->execute();
 	getDatabaseVersionStatement->execute();
 	getDatabaseVersionStatement->getColumns(databaseVersion);
 	getDatabaseVersionStatement->getColumns(databaseVersion);
+	getDatabaseVersionStatement->reset();
 
 
 	if (databaseVersion < 10501)
 	if (databaseVersion < 10501)
 	{
 	{
 		database->prepare(R"(
 		database->prepare(R"(
 			ALTER TABLE gameRooms
 			ALTER TABLE gameRooms
-			ADD COLUMN version TEXT NOT NULL DEFAULT ''
 			ADD COLUMN mods TEXT NOT NULL DEFAULT '{}'
 			ADD COLUMN mods TEXT NOT NULL DEFAULT '{}'
 		)")->execute();
 		)")->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"(
 	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
 		FROM gameRooms gr
 		LEFT JOIN accounts a ON gr.hostAccountID = a.accountID
 		LEFT JOIN accounts a ON gr.hostAccountID = a.accountID
 		WHERE status IN (1, 2, 3)
 		WHERE status IN (1, 2, 3)