diff options
Diffstat (limited to 'src/account-server/dalstorage.hpp')
-rw-r--r-- | src/account-server/dalstorage.hpp | 295 |
1 files changed, 10 insertions, 285 deletions
diff --git a/src/account-server/dalstorage.hpp b/src/account-server/dalstorage.hpp index f6c0e18a..cb7be468 100644 --- a/src/account-server/dalstorage.hpp +++ b/src/account-server/dalstorage.hpp @@ -25,9 +25,9 @@ #include <map> #include <vector> -#include "../dal/dataprovider.h" +#include "dal/dataprovider.h" -#include "../common/transaction.hpp" +#include "common/transaction.hpp" class Account; class Character; @@ -37,377 +37,102 @@ class Letter; class Post; /** - * A storage class that relies on DAL. + * The high level interface to the database. Through the storage you can access + * all accounts, characters, guilds, worlds states, transactions, etc. */ class DALStorage { public: - /** - * Constructor. - */ DALStorage(); - - /** - * Destructor. - */ ~DALStorage(); - /** - * Connect to the database and initialize it if necessary. - */ void open(); - - /** - * Disconnect from the database. - */ void close(); - /** - * Get an account by user name. - * - * @param userName the owner of the account. - * - * @return the account associated to the user name. - */ - Account *getAccount(const std::string& userName); - - /** - * Get an account by ID. - * - * @param accountID the ID of the account. - * - * @return the account associated with the ID. - */ + Account *getAccount(const std::string &userName); Account *getAccount(int accountID); - /** - * Gets a character by database ID. - * - * @param id the ID of the character. - * @param owner the account the character is in. - * - * @return the character associated to the ID. - */ Character *getCharacter(int id, Account *owner); - - /** - * Gets a character by character name. - * - * @param name of the character - * - * @return the character associated to the name - */ Character *getCharacter(const std::string &name); - /** - * Add a new account. - * - * @param account the new account. - */ void addAccount(Account *account); - - /** - * Delete an account. - * - * @param account the account to delete. - */ void delAccount(Account *account); - /** - * Update the date and time of the last login. - * - * @param account the account that recently logged in. - */ void updateLastLogin(const Account *account); - /** - * Write a modification message about Character points to the database. - * - * @param CharId ID of the character - * @param CharPoints Number of character points left for the character - * @param CorrPoints Number of correction points left for the character - * @param AttribId ID of the modified attribute - * @param AttribValue New value of the modified attribute - */ void updateCharacterPoints(int charId, int charPoints, int corrPoints, int attribId, int attribValue); - /** - * Write a modification message about character skills to the database. - * @param CharId ID of the character - * @param SkillId ID of the skill - * @param SkillValue new skill points - */ void updateExperience(int charId, int skillId, int skillValue); - /** - * Inserts a record about a status effect into the database - * @param charId ID of the character in the database - * @param statusId ID of the status effect - * @param time Time left on the status effect - */ void insertStatusEffect(int charId, int statusId, int time); - /** - * Sets a ban on an account (hence on all its characters). - * - * @param id character identifier. - * @param duration duration in minutes. - */ void banCharacter(int id, int duration); - /** - * Delete a character in the database. - * - * @param charId character identifier. - * @param startTransaction indicates wheter the function should run in - * its own transaction or is called inline of another transaction - */ void delCharacter(int charId, bool startTransaction) const; - - /** - * Delete a character in the database. The object itself i not touched - * by this function! - * - * @param character character object. - * @param startTransaction indicates wheter the function should run in - * its own transaction or is called inline of another transaction - */ void delCharacter(Character *character, bool startTransaction) const; - /** - * Removes expired bans from accounts - */ void checkBannedAccounts(); - /** - * Tells if the user name already exists. - * @return true if the user name exists. - */ bool doesUserNameExist(const std::string &name); - - /** - * Tells if the email address already exists. - * @return true if the email address exists. - */ bool doesEmailAddressExist(const std::string &email); - - /** - * Tells if the character name already exists. - * @return true if the character name exists. - */ bool doesCharacterNameExist(const std::string &name); - /** - * Updates the data for a single character, does not update the - * owning account or the characters name. - * Primary usage should be storing characterdata received from a - * game server. - * returns true if succefull, false otherwise. - * @param ptr Character to store values in the database. - * @param startTransaction set to false if this method is called as - * nested transaction. - * @return true on success - */ bool updateCharacter(Character *ptr, bool startTransaction = true); - /** - * Save changes of a skill to the database permanently. - * - * @param character Character thats skill has changed. - * @param skill_id Identifier of the changed skill. - * - * @exception dbl::DbSqlQueryExecFailure. - */ void flushSkill(const Character *character, int skill_id); - /** - * Add a new guild. - */ void addGuild(Guild *guild); - - /** - * Delete a guild. - */ void removeGuild(Guild *guild); - /** - * Add member to guild. - */ void addGuildMember(int guild_id, int memberId); - - /** - * Remove member from guild. - */ void removeGuildMember(int guildId, int memberId); - /** - * Save guild member rights. - */ void setMemberRights(int guildId, int memberId, int rights); - /** - * Get guild list. - * @return a list of guilds - */ std::list<Guild*> getGuildList(); - /** - * Save changes to the database permanently. - * - * @exception dal::DbSqlQueryExecFailure. - */ - void flushAll(); void flush(Account *); - /** - * Gets the value of a quest variable. - */ std::string getQuestVar(int id, const std::string &); - - /** - * Sets the value of a quest variable. - */ void setQuestVar(int id, const std::string &, const std::string &); - /** - * Gets the string value of a map specific world state variable. - * - * @param name Name of the requested world-state variable. - * @param map_id Id of the specific map. - */ std::string getWorldStateVar(const std::string &name, int map_id = -1); - - /** - * Sets the value of a world state variable. - * - * @param name Name of the world-state vairable. - * @param value New value of the world-state variable. - */ - void setWorldStateVar(const std::string &name, const std::string &value); - - /** - * Sets the value of a world state variable of a specific map. - * - * @param name Name of the world-state vairable. - * @param map_id ID of the specific map - * @param value New value of the world-state variable. - */ - void setWorldStateVar(const std::string &name, int map_id, + void setWorldStateVar(const std::string &name, + const std::string &value); + void setWorldStateVar(const std::string &name, int mapId, const std::string &value); - /** - * Set the level on an account - * - * @param id The id of the account - * @param level The level to set for the account - */ void setAccountLevel(int id, int level); - - /** - * Set the level on a character - * - * @param id The id of the character - * @param level The level to set for the character - */ void setPlayerLevel(int id, int level); - /** - * Store letter - * - * @param letter The letter to store - */ void storeLetter(Letter *letter); - - /** - * Retrieve post - * - * @param playerId The id of the character requesting his post - */ Post *getStoredPost(int playerId); - - /** - * Delete a letter from the database. - * @param letter The letter to delete. - */ void deletePost(Letter* letter); /** - * Add item to auction - * - * @param itemId The id of the item for auction - * @param player The player who put the item up for auction - * @param gold The amount of money to buy it - */ - void addAuctionItem(unsigned int itemId, int playerId, unsigned int gold); - - /** - * Gets the version of the local item database. - * - * @return Version of the item database. + * Returns the version of the local item database. */ unsigned int getItemDatabaseVersion() const { return mItemDbVersion; } - /** - * Sets the status of a character to online (true) or offline (false). - * - * @param charId Id of the character. - * @param online True to mark the character as being online. - */ void setOnlineStatus(int charId, bool online); - /** - * Store a transaction - */ void addTransaction(const Transaction &trans); - /** - * Retrieve a series of transactions - * Either based on number of transactions last saved - * or by all transactions since a date - */ std::vector<Transaction> getTransactions(unsigned int num); std::vector<Transaction> getTransactions(time_t date); private: - /** - * Copy constructor. - */ + // Prevent copying DALStorage(const DALStorage &rhs); - - - /** - * Assignment operator. - */ DALStorage &operator=(const DALStorage &rhs); - /** - * Gets an account from a prepared SQL statement - * - * @return the account found - */ Account *getAccountBySQL(); - - /** - * Gets a character from a prepared SQL statement - * - * @param owner the account the character is in. - * - * @return the character found by the query. - */ Character *getCharacterBySQL(Account *owner); - /** - * Synchronizes the base data in the connected SQL database with the xml - * files like items.xml. - * This method is called once after initialization of DALStorage. - * Probably this function should be called if a gm requests an online - * reload of the xml files to load new items or monsters without server - * restart. - */ void syncDatabase(); dal::DataProvider *mDb; /**< the data provider */ |