Browse Source

Fixed database version upgrade

Ivan Savenko 1 year ago
parent
commit
ff1aa4407c
1 changed files with 13 additions and 8 deletions
  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)