mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Simplified SQL statements preparation code
This commit is contained in:
		| @@ -104,225 +104,181 @@ void LobbyDatabase::prepareStatements() | ||||
| { | ||||
| 	// INSERT INTO | ||||
|  | ||||
| 	static const std::string insertChatMessageText = R"( | ||||
| 	insertChatMessageStatement = database->prepare(R"( | ||||
| 		INSERT INTO chatMessages(senderName, messageText, channelType, channelName) VALUES( ?, ?, ?, ?); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string insertAccountText = R"( | ||||
| 	insertAccountStatement = database->prepare(R"( | ||||
| 		INSERT INTO accounts(accountID, displayName, online) VALUES(?,?,0); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string insertAccessCookieText = R"( | ||||
| 	insertAccessCookieStatement = database->prepare(R"( | ||||
| 		INSERT INTO accountCookies(accountID, cookieUUID) VALUES(?,?); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string insertGameRoomText = R"( | ||||
| 	insertGameRoomStatement = database->prepare(R"( | ||||
| 		INSERT INTO gameRooms(roomID, hostAccountID, status, playerLimit) VALUES(?, ?, 0, 8); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string insertGameRoomPlayersText = R"( | ||||
| 	insertGameRoomPlayersStatement = database->prepare(R"( | ||||
| 		INSERT INTO gameRoomPlayers(roomID, accountID) VALUES(?,?); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string insertGameRoomInvitesText = R"( | ||||
| 	insertGameRoomInvitesStatement = database->prepare(R"( | ||||
| 		INSERT INTO gameRoomInvites(roomID, accountID) VALUES(?,?); | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	// DELETE FROM | ||||
|  | ||||
| 	static const std::string deleteGameRoomPlayersText = R"( | ||||
| 	deleteGameRoomPlayersStatement = database->prepare(R"( | ||||
| 		 DELETE FROM gameRoomPlayers WHERE roomID = ? AND accountID = ? | ||||
| 	)"; | ||||
|  | ||||
| 	static const std::string deleteGameRoomInvitesText = R"( | ||||
| 		DELETE FROM gameRoomInvites WHERE roomID = ? AND accountID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	// UPDATE | ||||
|  | ||||
| 	static const std::string setAccountOnlineText = R"( | ||||
| 	setAccountOnlineStatement = database->prepare(R"( | ||||
| 		UPDATE accounts | ||||
| 		SET online = ? | ||||
| 		WHERE accountID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string setGameRoomStatusText = R"( | ||||
| 	setGameRoomStatusStatement = database->prepare(R"( | ||||
| 		UPDATE gameRooms | ||||
| 		SET status = ? | ||||
| 		WHERE roomID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string updateAccountLoginTimeText = R"( | ||||
| 	updateAccountLoginTimeStatement = database->prepare(R"( | ||||
| 		UPDATE accounts | ||||
| 		SET lastLoginTime = CURRENT_TIMESTAMP | ||||
| 		WHERE accountID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string updateRoomDescriptionText = R"( | ||||
| 	updateRoomDescriptionStatement = database->prepare(R"( | ||||
| 		UPDATE gameRooms | ||||
| 		SET description = ? | ||||
| 		WHERE roomID  = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string updateRoomPlayerLimitText = R"( | ||||
| 	updateRoomPlayerLimitStatement = database->prepare(R"( | ||||
| 		UPDATE gameRooms | ||||
| 		SET playerLimit = ? | ||||
| 		WHERE roomID  = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	// SELECT FROM | ||||
|  | ||||
| 	static const std::string getRecentMessageHistoryText = R"( | ||||
| 	getRecentMessageHistoryStatement = database->prepare(R"( | ||||
| 		SELECT senderName, displayName, messageText, strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',cm.creationTime)  AS secondsElapsed | ||||
| 		FROM chatMessages cm | ||||
| 		LEFT JOIN accounts on accountID = senderName | ||||
| 		WHERE secondsElapsed < 60*60*18 AND channelType = ? AND channelName = ? | ||||
| 		ORDER BY cm.creationTime DESC | ||||
| 		LIMIT 100 | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getFullMessageHistoryText = R"( | ||||
| 	getFullMessageHistoryStatement = database->prepare(R"( | ||||
| 		SELECT senderName, displayName, messageText, strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',cm.creationTime) AS secondsElapsed | ||||
| 		FROM chatMessages cm | ||||
| 		LEFT JOIN accounts on accountID = senderName | ||||
| 		WHERE channelType = ? AND channelName = ? | ||||
| 		ORDER BY cm.creationTime DESC | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getIdleGameRoomText = R"( | ||||
| 	getIdleGameRoomStatement = database->prepare(R"( | ||||
| 		SELECT roomID | ||||
| 		FROM gameRooms | ||||
| 		WHERE hostAccountID = ? AND status = 0 | ||||
| 		LIMIT 1 | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getGameRoomStatusText = R"( | ||||
| 	getGameRoomStatusStatement = database->prepare(R"( | ||||
| 		SELECT status | ||||
| 		FROM gameRooms | ||||
| 		WHERE roomID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getAccountGameHistoryText = R"( | ||||
| 	getAccountGameHistoryStatement = database->prepare(R"( | ||||
| 		SELECT gr.roomID, hostAccountID, displayName, description, status, playerLimit, strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',gr.creationTime)  AS secondsElapsed | ||||
| 		FROM gameRoomPlayers grp | ||||
| 		LEFT JOIN gameRooms gr ON gr.roomID = grp.roomID | ||||
| 		LEFT JOIN accounts a ON gr.hostAccountID = a.accountID | ||||
| 		WHERE grp.accountID = ? AND status IN (4,5) | ||||
| 		ORDER BY secondsElapsed ASC | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getAccountGameRoomText = R"( | ||||
| 	getAccountGameRoomStatement = database->prepare(R"( | ||||
| 		SELECT grp.roomID | ||||
| 		FROM gameRoomPlayers grp | ||||
| 		LEFT JOIN gameRooms gr ON gr.roomID = grp.roomID | ||||
| 		WHERE accountID = ? AND status IN (1, 2, 3) | ||||
| 		LIMIT 1 | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getActiveAccountsText = R"( | ||||
| 	getActiveAccountsStatement = database->prepare(R"( | ||||
| 		SELECT accountID, displayName | ||||
| 		FROM accounts | ||||
| 		WHERE online = 1 | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getActiveGameRoomsText = R"( | ||||
| 	getActiveGameRoomsStatement = database->prepare(R"( | ||||
| 		SELECT roomID, hostAccountID, displayName, description, status, playerLimit, 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) | ||||
| 		ORDER BY secondsElapsed ASC | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string countRoomUsedSlotsText = R"( | ||||
| 	countRoomUsedSlotsStatement = database->prepare(R"( | ||||
| 		SELECT a.accountID, a.displayName | ||||
| 		FROM gameRoomPlayers grp | ||||
| 		LEFT JOIN accounts a ON a.accountID = grp.accountID | ||||
| 		WHERE roomID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string countRoomTotalSlotsText = R"( | ||||
| 	countRoomTotalSlotsStatement = database->prepare(R"( | ||||
| 		SELECT playerLimit | ||||
| 		FROM gameRooms | ||||
| 		WHERE roomID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string getAccountDisplayNameText = R"( | ||||
| 	getAccountDisplayNameStatement = database->prepare(R"( | ||||
| 		SELECT displayName | ||||
| 		FROM accounts | ||||
| 		WHERE accountID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string isAccountCookieValidText = R"( | ||||
| 	isAccountCookieValidStatement = database->prepare(R"( | ||||
| 		SELECT COUNT(accountID) | ||||
| 		FROM accountCookies | ||||
| 		WHERE accountID = ? AND cookieUUID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string isGameRoomCookieValidText = R"( | ||||
| 		SELECT COUNT(roomID) | ||||
| 		FROM gameRooms | ||||
| 		LEFT JOIN accountCookies ON accountCookies.accountID = gameRooms.hostAccountID | ||||
| 		WHERE roomID = ? AND cookieUUID = ? AND strftime('%s',CURRENT_TIMESTAMP)- strftime('%s',creationTime) < ? | ||||
| 	)"; | ||||
|  | ||||
| 	static const std::string isPlayerInGameRoomText = R"( | ||||
| 	isPlayerInGameRoomStatement = database->prepare(R"( | ||||
| 		SELECT COUNT(accountID) | ||||
| 		FROM gameRoomPlayers grp | ||||
| 		LEFT JOIN gameRooms gr ON gr.roomID = grp.roomID | ||||
| 		WHERE accountID = ? AND grp.roomID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string isPlayerInAnyGameRoomText = R"( | ||||
| 	isPlayerInAnyGameRoomStatement = database->prepare(R"( | ||||
| 		SELECT COUNT(accountID) | ||||
| 		FROM gameRoomPlayers grp | ||||
| 		LEFT JOIN gameRooms gr ON gr.roomID = grp.roomID | ||||
| 		WHERE accountID = ? AND status IN (1, 2, 3) | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string isAccountIDExistsText = R"( | ||||
| 	isAccountIDExistsStatement = database->prepare(R"( | ||||
| 		SELECT COUNT(accountID) | ||||
| 		FROM accounts | ||||
| 		WHERE accountID = ? | ||||
| 	)"; | ||||
| 	)"); | ||||
|  | ||||
| 	static const std::string isAccountNameExistsText = R"( | ||||
| 	isAccountNameExistsStatement = database->prepare(R"( | ||||
| 		SELECT COUNT(displayName) | ||||
| 		FROM accounts | ||||
| 		WHERE displayName = ? | ||||
| 	)"; | ||||
|  | ||||
| 	insertChatMessageStatement = database->prepare(insertChatMessageText); | ||||
| 	insertAccountStatement = database->prepare(insertAccountText); | ||||
| 	insertAccessCookieStatement = database->prepare(insertAccessCookieText); | ||||
| 	insertGameRoomStatement = database->prepare(insertGameRoomText); | ||||
| 	insertGameRoomPlayersStatement = database->prepare(insertGameRoomPlayersText); | ||||
| 	insertGameRoomInvitesStatement = database->prepare(insertGameRoomInvitesText); | ||||
|  | ||||
| 	deleteGameRoomPlayersStatement = database->prepare(deleteGameRoomPlayersText); | ||||
|  | ||||
| 	setAccountOnlineStatement = database->prepare(setAccountOnlineText); | ||||
| 	setGameRoomStatusStatement = database->prepare(setGameRoomStatusText); | ||||
| 	updateAccountLoginTimeStatement = database->prepare(updateAccountLoginTimeText); | ||||
| 	updateRoomDescriptionStatement = database->prepare(updateRoomDescriptionText); | ||||
| 	updateRoomPlayerLimitStatement = database->prepare(updateRoomPlayerLimitText); | ||||
|  | ||||
| 	getRecentMessageHistoryStatement = database->prepare(getRecentMessageHistoryText); | ||||
| 	getFullMessageHistoryStatement = database->prepare(getFullMessageHistoryText); | ||||
| 	getIdleGameRoomStatement = database->prepare(getIdleGameRoomText); | ||||
| 	getGameRoomStatusStatement = database->prepare(getGameRoomStatusText); | ||||
| 	getAccountGameHistoryStatement = database->prepare(getAccountGameHistoryText); | ||||
| 	getAccountGameRoomStatement = database->prepare(getAccountGameRoomText); | ||||
| 	getActiveAccountsStatement = database->prepare(getActiveAccountsText); | ||||
| 	getActiveGameRoomsStatement = database->prepare(getActiveGameRoomsText); | ||||
| 	getAccountDisplayNameStatement = database->prepare(getAccountDisplayNameText); | ||||
| 	countRoomUsedSlotsStatement = database->prepare(countRoomUsedSlotsText); | ||||
| 	countRoomTotalSlotsStatement = database->prepare(countRoomTotalSlotsText); | ||||
|  | ||||
| 	isAccountCookieValidStatement = database->prepare(isAccountCookieValidText); | ||||
| 	isPlayerInGameRoomStatement = database->prepare(isPlayerInGameRoomText); | ||||
| 	isPlayerInAnyGameRoomStatement = database->prepare(isPlayerInAnyGameRoomText); | ||||
| 	isAccountIDExistsStatement = database->prepare(isAccountIDExistsText); | ||||
| 	isAccountNameExistsStatement = database->prepare(isAccountNameExistsText); | ||||
| 	)"); | ||||
| } | ||||
|  | ||||
| LobbyDatabase::~LobbyDatabase() = default; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user