123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * LobbyDatabase.h, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #pragma once
- #include "LobbyDefines.h"
- class SQLiteInstance;
- class SQLiteStatement;
- using SQLiteInstancePtr = std::unique_ptr<SQLiteInstance>;
- using SQLiteStatementPtr = std::unique_ptr<SQLiteStatement>;
- class LobbyDatabase
- {
- SQLiteInstancePtr database;
- SQLiteStatementPtr insertChatMessageStatement;
- SQLiteStatementPtr insertAccountStatement;
- SQLiteStatementPtr insertAccessCookieStatement;
- SQLiteStatementPtr insertGameRoomStatement;
- SQLiteStatementPtr insertGameRoomPlayersStatement;
- SQLiteStatementPtr insertGameRoomInvitesStatement;
- SQLiteStatementPtr deleteGameRoomPlayersStatement;
- SQLiteStatementPtr deleteGameRoomInvitesStatement;
- SQLiteStatementPtr setAccountOnlineStatement;
- SQLiteStatementPtr setGameRoomStatusStatement;
- SQLiteStatementPtr updateAccountLoginTimeStatement;
- SQLiteStatementPtr updateRoomDescriptionStatement;
- SQLiteStatementPtr updateRoomPlayerLimitStatement;
- SQLiteStatementPtr getRecentMessageHistoryStatement;
- SQLiteStatementPtr getFullMessageHistoryStatement;
- SQLiteStatementPtr getIdleGameRoomStatement;
- SQLiteStatementPtr getGameRoomStatusStatement;
- SQLiteStatementPtr getAccountGameHistoryStatement;
- SQLiteStatementPtr getActiveGameRoomsStatement;
- SQLiteStatementPtr getActiveAccountsStatement;
- SQLiteStatementPtr getAccountInviteStatusStatement;
- SQLiteStatementPtr getAccountGameRoomStatement;
- SQLiteStatementPtr getAccountDisplayNameStatement;
- SQLiteStatementPtr getGameRoomPlayersStatement;
- SQLiteStatementPtr getGameRoomInvitesStatement;
- SQLiteStatementPtr countRoomUsedSlotsStatement;
- SQLiteStatementPtr countRoomTotalSlotsStatement;
- SQLiteStatementPtr isAccountCookieValidStatement;
- SQLiteStatementPtr isGameRoomCookieValidStatement;
- SQLiteStatementPtr isPlayerInGameRoomStatement;
- SQLiteStatementPtr isPlayerInAnyGameRoomStatement;
- SQLiteStatementPtr isAccountIDExistsStatement;
- SQLiteStatementPtr isAccountNameExistsStatement;
- void prepareStatements();
- void createTables();
- void upgradeDatabase();
- void clearOldData();
- public:
- explicit LobbyDatabase(const boost::filesystem::path & databasePath);
- ~LobbyDatabase();
- void setAccountOnline(const std::string & accountID, bool isOnline);
- void setGameRoomStatus(const std::string & roomID, LobbyRoomState roomStatus);
- void insertPlayerIntoGameRoom(const std::string & accountID, const std::string & roomID);
- void deletePlayerFromGameRoom(const std::string & accountID, const std::string & roomID);
- void deleteGameRoomInvite(const std::string & targetAccountID, const std::string & roomID);
- void insertGameRoomInvite(const std::string & targetAccountID, const std::string & roomID);
- void insertGameRoom(const std::string & roomID, const std::string & hostAccountID, const std::string & serverVersion, const std::string & modListJson);
- void insertAccount(const std::string & accountID, const std::string & displayName);
- void insertAccessCookie(const std::string & accountID, const std::string & accessCookieUUID);
- void insertChatMessage(const std::string & sender, const std::string & channelType, const std::string & roomID, const std::string & messageText);
- void updateAccountLoginTime(const std::string & accountID);
- void updateRoomPlayerLimit(const std::string & gameRoomID, int playerLimit);
- void updateRoomDescription(const std::string & gameRoomID, const std::string & description);
- std::vector<LobbyGameRoom> getAccountGameHistory(const std::string & accountID);
- std::vector<LobbyGameRoom> getActiveGameRooms();
- std::vector<LobbyAccount> getActiveAccounts();
- std::vector<LobbyChatMessage> getRecentMessageHistory(const std::string & channelType, const std::string & channelName);
- std::vector<LobbyChatMessage> getFullMessageHistory(const std::string & channelType, const std::string & channelName);
- std::string getIdleGameRoom(const std::string & hostAccountID);
- std::string getAccountGameRoom(const std::string & accountID);
- std::string getAccountDisplayName(const std::string & accountID);
- LobbyCookieStatus getAccountCookieStatus(const std::string & accountID, const std::string & accessCookieUUID);
- LobbyInviteStatus getAccountInviteStatus(const std::string & accountID, const std::string & roomID);
- LobbyRoomState getGameRoomStatus(const std::string & roomID);
- uint32_t getGameRoomFreeSlots(const std::string & roomID);
- bool isPlayerInGameRoom(const std::string & accountID);
- bool isPlayerInGameRoom(const std::string & accountID, const std::string & roomID);
- bool isAccountNameExists(const std::string & displayName);
- bool isAccountIDExists(const std::string & accountID);
- };
|