DeleteCharacter converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-07-03 16:43:24 -07:00 committed by Arthur Ice
parent 3cb7d9e3fe
commit 3aacf7df6a

View File

@ -415,12 +415,8 @@ returns false on failure, true otherwise
*/ */
bool Database::DeleteCharacter(char *name) bool Database::DeleteCharacter(char *name)
{ {
char errbuf[MYSQL_ERRMSG_SIZE]; char *query=nullptr;
char *query=0; int charid;
MYSQL_RES *result;
MYSQL_ROW row;
int charid, matches;
uint32 affected_rows;
if(!name || !strlen(name)) if(!name || !strlen(name))
{ {
@ -433,249 +429,171 @@ bool Database::DeleteCharacter(char *name)
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << "DeleteCharacter: Attempting to delete '" << name << "'" << std::endl; std::cout << "DeleteCharacter: Attempting to delete '" << name << "'" << std::endl;
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "SELECT id from character_ WHERE name='%s'", name), errbuf, &result);
if (query) auto results = QueryDatabase(query, MakeAnyLenString(&query, "SELECT id from character_ WHERE name='%s'", name));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
} if(results.RowCount() != 1)
matches = mysql_num_rows(result);
if(matches == 1)
{ {
row = mysql_fetch_row(result); std::cerr << "DeleteCharacter error: got " << results.RowCount() << " rows matching '" << name << "'" << std::endl;
charid = atoi(row[0]);
#if DEBUG >= 5
std::cout << "DeleteCharacter: found '" << name << "' with char id: " << charid << std::endl;
#endif
}
else
{
std::cerr << "DeleteCharacter error: got " << matches << " rows matching '" << name << "'" << std::endl;
if(result)
{
mysql_free_result(result);
result = nullptr;
}
return false; return false;
} }
if(result) auto row = results.begin();
{ charid = atoi(row[0]);
mysql_free_result(result);
result = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << "DeleteCharacter: found '" << name << "' with char id: " << charid << std::endl;
std::cout << "DeleteCharacter: deleting << '" << name << "' (id " << charid << "): " << std::endl; std::cout << "DeleteCharacter: deleting << '" << name << "' (id " << charid << "): " << std::endl;
std::cout << " quest_globals"; std::cout << " quest_globals";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from quest_globals WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from quest_globals WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " character_tasks"; std::cout << " character_tasks";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from character_tasks WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from character_tasks WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " character_activities"; std::cout << " character_activities";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from character_activities WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from character_activities WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " character_enabledtasks"; std::cout << " character_enabledtasks";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from character_enabledtasks WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from character_enabledtasks WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " completed_tasks"; std::cout << " completed_tasks";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from completed_tasks WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from completed_tasks WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " friends"; std::cout << " friends";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from friends WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from friends WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " mail"; std::cout << " mail";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from mail WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from mail WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " ptimers"; std::cout << " ptimers";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from timers WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from timers WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " inventory"; std::cout << " inventory";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from inventory WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE from inventory WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " guild_members"; std::cout << " guild_members";
#endif #endif
#ifdef BOTS #ifdef BOTS
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM guild_members WHERE char_id='%d' AND GetMobTypeById(%i) = 'C'", charid), errbuf, nullptr, &affected_rows); QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM guild_members WHERE char_id='%d' AND GetMobTypeById(%i) = 'C'", charid));
#else #else
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM guild_members WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows); QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM guild_members WHERE char_id='%d'", charid));
#endif #endif
if(query)
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " recipes"; std::cout << " recipes";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM char_recipe_list WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM char_recipe_list WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " adventure_stats"; std::cout << " adventure_stats";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM adventure_stats WHERE player_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM adventure_stats WHERE player_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " zone_flags"; std::cout << " zone_flags";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM zone_flags WHERE charID='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM zone_flags WHERE charID='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " titles"; std::cout << " titles";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM titles WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM titles WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " titlesets"; std::cout << " titlesets";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM player_titlesets WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM player_titlesets WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " keyring"; std::cout << " keyring";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM keyring WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM keyring WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " factions"; std::cout << " factions";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM faction_values WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM faction_values WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " instances"; std::cout << " instances";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM instance_list_player WHERE charid='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM instance_list_player WHERE charid='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " _character"; std::cout << " _character";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE from character_ WHERE id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) results = QueryDatabase(query, MakeAnyLenString(&query, "DELETE from character_ WHERE id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
} if(results.RowsAffected() != 1) // here we have to have a match or it's an error
if(affected_rows != 1) // here we have to have a match or it's an error
{ {
LogFile->write(EQEMuLog::Error, "DeleteCharacter: error: delete operation affected %d rows\n", affected_rows); LogFile->write(EQEMuLog::Error, "DeleteCharacter: error: delete operation affected %d rows\n", results.RowsAffected());
return false; return false;
} }
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << " alternate currency"; std::cout << " alternate currency";
#endif #endif
RunQuery(query, MakeAnyLenString(&query, "DELETE FROM character_alt_currency WHERE char_id='%d'", charid), errbuf, nullptr, &affected_rows);
if(query) QueryDatabase(query, MakeAnyLenString(&query, "DELETE FROM character_alt_currency WHERE char_id='%d'", charid));
{
safe_delete_array(query); safe_delete_array(query);
query = nullptr;
}
#if DEBUG >= 5 #if DEBUG >= 5
std::cout << std::endl; std::cout << std::endl;