FindAccount converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-08-23 21:16:05 -07:00
parent a568a6f194
commit 5c640b2d40

View File

@ -132,55 +132,44 @@ void Database::GetAccountStatus(Client *client) {
} }
int Database::FindAccount(const char *CharacterName, Client *c) { int Database::FindAccount(const char *characterName, Client *client) {
_log(UCS__TRACE, "FindAccount for character %s", CharacterName); _log(UCS__TRACE, "FindAccount for character %s", characterName);
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
MYSQL_RES *result;
MYSQL_ROW row;
c->ClearCharacters(); client->ClearCharacters();
std::string query = StringFormat("SELECT `id`, `account_id`, `level` "
if (!RunQuery(query,MakeAnyLenString(&query, "select `id`, `account_id`, `level` from `character_` where `name`='%s' limit 1", "FROM `character_` WHERE `name` = '%s' LIMIT 1",
CharacterName),errbuf,&result)) characterName);
{ auto results = QueryDatabase(query);
_log(UCS__ERROR, "FindAccount query failed: %s", query); if (!results.Success()) {
safe_delete_array(query); _log(UCS__ERROR, "FindAccount query failed: %s", query.c_str());
return -1; return -1;
} }
safe_delete_array(query);
if (mysql_num_rows(result) != 1) if (results.RowCount() != 1) {
{
_log(UCS__ERROR, "Bad result from query"); _log(UCS__ERROR, "Bad result from query");
mysql_free_result(result);
return -1; return -1;
} }
row = mysql_fetch_row(result); auto row = results.begin();
c->AddCharacter(atoi(row[0]), CharacterName, atoi(row[2])); client->AddCharacter(atoi(row[0]), characterName, atoi(row[2]));
int AccountID = atoi(row[1]);
mysql_free_result(result); int accountID = atoi(row[1]);
_log(UCS__TRACE, "Account ID for %s is %i", CharacterName, AccountID);
if (!RunQuery(query,MakeAnyLenString(&query, "select `id`, `name`, `level` from `character_` where `account_id`=%i and `name` !='%s'", _log(UCS__TRACE, "Account ID for %s is %i", characterName, accountID);
AccountID, CharacterName),errbuf,&result))
{
safe_delete_array(query);
return AccountID;
}
safe_delete_array(query);
for(unsigned int i = 0; i < mysql_num_rows(result); i++) query = StringFormat("SELECT `id`, `name`, `level` FROM `character_` "
{ "WHERE `account_id` = %i AND `name` != '%s'",
row = mysql_fetch_row(result); accountID, characterName);
c->AddCharacter(atoi(row[0]), row[1], atoi(row[2])); results = QueryDatabase(query);
} if (!results.Success())
mysql_free_result(result); return accountID;
return AccountID;
for (auto row = results.begin(); row != results.end(); ++row)
client->AddCharacter(atoi(row[0]), row[1], atoi(row[2]));
return accountID;
} }
bool Database::VerifyMailKey(std::string CharacterName, int IPAddress, std::string MailKey) { bool Database::VerifyMailKey(std::string CharacterName, int IPAddress, std::string MailKey) {