summaryrefslogtreecommitdiff
path: root/src/account-server/storage.h
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-12-13 22:51:50 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-12-13 22:51:50 +0100
commit29735035f6399b1bfa5ef3789fb9f7598d009d27 (patch)
tree78a715fd02d7de70eab67532944122495ce26126 /src/account-server/storage.h
parentd6d590fedaf928b3705d0a2876f0cebc69cb0f7d (diff)
downloadmanaserv-29735035f6399b1bfa5ef3789fb9f7598d009d27.tar.gz
manaserv-29735035f6399b1bfa5ef3789fb9f7598d009d27.tar.bz2
manaserv-29735035f6399b1bfa5ef3789fb9f7598d009d27.tar.xz
manaserv-29735035f6399b1bfa5ef3789fb9f7598d009d27.zip
Moved storage doc from .cpp to .h and updated it.
Since it's what is done for the other files in the project. Trivial fix.
Diffstat (limited to 'src/account-server/storage.h')
-rw-r--r--src/account-server/storage.h312
1 files changed, 309 insertions, 3 deletions
diff --git a/src/account-server/storage.h b/src/account-server/storage.h
index 9dc80693..dff74a0e 100644
--- a/src/account-server/storage.h
+++ b/src/account-server/storage.h
@@ -46,104 +46,410 @@ class Storage
Storage();
~Storage();
+ /**
+ * 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(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 an account to the database.
+ *
+ * @param account the new account.
+ */
void addAccount(Account *account);
+
+ /**
+ * Delete an account and its associated data from the database.
+ *
+ * @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
+ */
void updateCharacterPoints(int charId,
int charPoints, int corrPoints);
+ /**
+ * 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);
+ /**
+ * Write a modification message about character attributes to the database.
+ *
+ * @param charId The Id of the character
+ * @param attrId The Id of the attribute
+ * @param base The base value of the attribute for this character
+ * @param mod The cached modified value for this character.
+ */
void updateAttribute(int charId, unsigned int attrId,
double base, double mod);
+ /**
+ * Write a modification message about character skills to the database.
+ *
+ * @param CharId ID of the character
+ * @param monsterId ID of the monster type
+ * @param kills new amount of kills
+ */
void updateKillCount(int charId, int monsterId, int kills);
+ /**
+ * 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.
+ */
void delCharacter(int charId) const;
+
+ /**
+ * Delete a character in the database. The object itself is not touched
+ * by this function!
+ *
+ * @param character character object.
+ */
void delCharacter(Character *character) const;
+ /**
+ * Removes expired bans from accounts
+ */
void checkBannedAccounts();
+ /**
+ * Tells if the user name already exists.
+ *
+ * @param name The user name to check
+ *
+ * @return true if the user name exists.
+ */
bool doesUserNameExist(const std::string &name);
+
+ /**
+ * Tells if the email address already exists.
+ *
+ * @param email The email address to check
+ *
+ * @return true if the email address exists.
+ */
bool doesEmailAddressExist(const std::string &email);
+
+ /**
+ * Tells if the character's name already exists.
+ *
+ * @param name The character name to check
+ *
+ * @return true if character's 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.
+ *
+ * @param ptr Character to store values in the database.
+ *
+ * @return true on success
+ */
bool updateCharacter(Character *ptr);
+ /**
+ * 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.
+ * @deprecated Use DALStorage::updateExperience instead!!!
+ */
void flushSkill(const Character *character, int skill_id);
+ /**
+ * Add a new guild.
+ *
+ * @param guild The guild to add in database.
+ */
void addGuild(Guild *guild);
+
+ /**
+ * Delete a guild.
+ *
+ * @param guild The guild to remove from database.
+ */
void removeGuild(Guild *guild);
- void addGuildMember(int guild_id, int memberId);
+ /**
+ * Add member to guild.
+ *
+ * @param guildId The guild Id where to add the member
+ * @param memberId The character Id to add in the guild.
+ */
+ void addGuildMember(int guildId, int memberId);
+
+ /**
+ * Remove member from guild.
+ *
+ * @param guildId The guild Id where to remove the member
+ * @param memberId The character Id to remove from the guild.
+ */
void removeGuildMember(int guildId, int memberId);
+ /**
+ * Save guild member rights.
+ *
+ * @param guildId The guild Id where to set the member's right
+ * @param memberId The character Id
+ * @param memberId The new right level of the member.
+ */
void setMemberRights(int guildId, int memberId, int rights);
+ /**
+ * Get the list of guilds.
+ *
+ * @return a list of guilds
+ */
std::list<Guild*> getGuildList();
+ /**
+ * Update an account to the database.
+ *
+ * @param Account object to update.
+ */
void flush(Account *);
+ /**
+ * Gets the value of a quest variable.
+ *
+ * @param id character id.
+ * @param name quest var name to get.
+ */
std::string getQuestVar(int id, const std::string &);
+
+ /**
+ * Sets the value of a quest variable.
+ *
+ * @param id character id.
+ * @param name quest var name to set.
+ * @param value value to set.
+ */
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 mapId ID of the specific map
+ * @param value New value of the world-state variable.
+ */
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);
/**
* Returns the version of the local item database.
+ *
+ * @return the database version number.
*/
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.
+ *
+ * @param trans The transaction to add in the logs.
+ */
void addTransaction(const Transaction &trans);
+ /**
+ * Retrieve the last \a num transactions that were stored.
+ *
+ * @return a vector of transactions.
+ */
std::vector<Transaction> getTransactions(unsigned int num);
+
+ /**
+ * Retrieve all transactions since the given \a date.
+ *
+ * @return a vector of transactions.
+ */
std::vector<Transaction> getTransactions(time_t date);
/**
* Provides direct access to the database. Use with care!
+ *
+ * @return a database provider object.
*/
- dal::DataProvider *database() const { return mDb; }
+ dal::DataProvider *database() const
+ { return mDb; }
private:
// Prevent copying
Storage(const Storage &rhs);
Storage &operator=(const Storage &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 */
+ dal::DataProvider *mDb; /**< the data provider */
unsigned int mItemDbVersion; /**< Version of the item database. */
};