From e618fe87bdab084c3d5431ecedd6b6279e61c0b4 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Mon, 18 Aug 2014 21:20:55 -0700 Subject: [PATCH 1/3] DeletePetitionFromDB converted to QueryDatabase --- zone/petitions.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/zone/petitions.cpp b/zone/petitions.cpp index 51910a052..282d57ca7 100644 --- a/zone/petitions.cpp +++ b/zone/petitions.cpp @@ -216,18 +216,12 @@ void PetitionList::UpdatePetition(Petition* pet) { } void ZoneDatabase::DeletePetitionFromDB(Petition* wpet) { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - uint32 affected_rows = 0; - uint8 checkedout = 0; - if (wpet->CheckedOut()) checkedout = 0; - else checkedout = 1; - if (!RunQuery(query, MakeAnyLenString(&query, "DELETE from petitions where petid = %i", wpet->GetID()), errbuf, 0, &affected_rows)) { - LogFile->write(EQEMuLog::Error, "Error in DeletePetitionFromDB query '%s': %s", query, errbuf); - } - safe_delete_array(query); - return; + std::string query = StringFormat("DELETE FROM petitions WHERE petid = %i", wpet->GetID()); + auto results = QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Error in DeletePetitionFromDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + } void ZoneDatabase::UpdatePetitionToDB(Petition* wpet) { From 6364d2c31d63b54384206566417e3f5ad0233a98 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Mon, 18 Aug 2014 21:36:11 -0700 Subject: [PATCH 2/3] UpdatePetitionToDB converted to QueryDatabase --- zone/petitions.cpp | 56 +++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/zone/petitions.cpp b/zone/petitions.cpp index 282d57ca7..c9b7599cd 100644 --- a/zone/petitions.cpp +++ b/zone/petitions.cpp @@ -225,46 +225,50 @@ void ZoneDatabase::DeletePetitionFromDB(Petition* wpet) { } void ZoneDatabase::UpdatePetitionToDB(Petition* wpet) { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - uint32 affected_rows = 0; - uint8 checkedout = 0; - if (wpet->CheckedOut()) checkedout = 1; - else checkedout = 0; - if (!RunQuery(query, MakeAnyLenString(&query, "UPDATE petitions set gmtext = '%s', lastgm = '%s', urgency = %i, checkouts = %i, unavailables = %i, ischeckedout = %i where petid = %i", wpet->GetGMText(), wpet->GetLastGM(), wpet->GetUrgency(), wpet->GetCheckouts(), wpet->GetUnavails(), checkedout, wpet->GetID()), errbuf, 0, &affected_rows)) { - LogFile->write(EQEMuLog::Error, "Error in UpdatePetitionToDB query '%s': %s", query, errbuf); - } - safe_delete_array(query); - return; + + std::string query = StringFormat("UPDATE petitions SET gmtext = '%s', lastgm = '%s', urgency = %i, " + "checkouts = %i, unavailables = %i, ischeckedout = %i " + "WHERE petid = %i", + wpet->GetGMText(), wpet->GetLastGM(), wpet->GetUrgency(), + wpet->GetCheckouts(), wpet->GetUnavails(), + wpet->CheckedOut() ? 1: 0, wpet->GetID()); + auto results = QueryDatabase(query); + if (!results.Success()) + LogFile->write(EQEMuLog::Error, "Error in UpdatePetitionToDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + } - - void ZoneDatabase::InsertPetitionToDB(Petition* wpet) { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - uint32 affected_rows = 0; - uint8 checkedout = 0; - if (wpet->CheckedOut()) - checkedout = 1; - else - checkedout = 0; uint32 len = strlen(wpet->GetPetitionText()); char* petitiontext = new char[2*len+1]; memset(petitiontext, 0, 2*len+1); DoEscapeString(petitiontext, wpet->GetPetitionText(), len); - if (!RunQuery(query, MakeAnyLenString(&query, "INSERT INTO petitions (petid, charname, accountname, lastgm, petitiontext, zone, urgency, charclass, charrace, charlevel, checkouts, unavailables, ischeckedout, senttime, gmtext) values (%i,'%s','%s','%s','%s',%i,%i,%i,%i,%i,%i,%i,%i,%i, '%s')", wpet->GetID(), wpet->GetCharName(), wpet->GetAccountName(), wpet->GetLastGM(), petitiontext, wpet->GetZone(), wpet->GetUrgency(), wpet->GetCharClass(), wpet->GetCharRace(), wpet->GetCharLevel(), wpet->GetCheckouts(), wpet->GetUnavails(), checkedout, wpet->GetSentTime(), wpet->GetGMText()), errbuf, 0, &affected_rows)) { - LogFile->write(EQEMuLog::Error, "Error in InsertPetitionToDB query '%s': %s", query, errbuf); + + std::string query = StringFormat("INSERT INTO petitions " + "(petid, charname, accountname, lastgm, " + "petitiontext, zone, urgency, charclass, " + "charrace, charlevel, checkouts, unavailables, " + "ischeckedout, senttime, gmtext) " + "VALUES (%i, '%s', '%s', '%s', '%s', " + "%i, %i, %i, %i, %i, " + "%i, %i, %i, %i, '%s')", + wpet->GetID(), wpet->GetCharName(), wpet->GetAccountName(), wpet->GetLastGM(), + petitiontext, wpet->GetZone(), wpet->GetUrgency(), wpet->GetCharClass(), + wpet->GetCharRace(), wpet->GetCharLevel(), wpet->GetCheckouts(), wpet->GetUnavails(), + wpet->CheckedOut()? 1: 0, wpet->GetSentTime(), wpet->GetGMText()); + safe_delete_array(petitiontext); + auto results = QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in InsertPetitionToDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); + return; } - safe_delete_array(petitiontext); - safe_delete_array(query); #if EQDEBUG >= 5 LogFile->write(EQEMuLog::Debug, "New petition created"); #endif - return; + } void ZoneDatabase::RefreshPetitionsFromDB() From 748748dda95a2c43b50da4bc08efc818b9621f8f Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Mon, 18 Aug 2014 21:46:46 -0700 Subject: [PATCH 3/3] RefreshPetitionsFromDB converted to QueryDatabase --- zone/petitions.cpp | 65 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/zone/petitions.cpp b/zone/petitions.cpp index c9b7599cd..8eb3ca896 100644 --- a/zone/petitions.cpp +++ b/zone/petitions.cpp @@ -273,41 +273,40 @@ void ZoneDatabase::InsertPetitionToDB(Petition* wpet) void ZoneDatabase::RefreshPetitionsFromDB() { - char errbuf[MYSQL_ERRMSG_SIZE]; - char *query = 0; - MYSQL_RES *result; - MYSQL_ROW row; Petition* newpet; - if (RunQuery(query, MakeAnyLenString(&query, "SELECT petid, charname, accountname, lastgm, petitiontext, zone, urgency, charclass, charrace, charlevel, checkouts, unavailables, ischeckedout, senttime, gmtext from petitions order by petid"), errbuf, &result)) - { - safe_delete_array(query); - while ((row = mysql_fetch_row(result))) { - newpet = new Petition(atoi(row[0])); - newpet->SetCName(row[1]); - newpet->SetAName(row[2]); - newpet->SetLastGM(row[3]); - newpet->SetPetitionText(row[4]); - newpet->SetZone(atoi(row[5])); - newpet->SetUrgency(atoi(row[6])); - newpet->SetClass(atoi(row[7])); - newpet->SetRace(atoi(row[8])); - newpet->SetLevel(atoi(row[9])); - newpet->SetCheckouts(atoi(row[10])); - newpet->SetUnavails(atoi(row[11])); - newpet->SetSentTime2(atol(row[13])); - newpet->SetGMText(row[14]); - std::cout << "Petition " << row[0] << " pettime = " << newpet->GetSentTime() << std::endl; - if (atoi(row[12]) == 1) newpet->SetCheckedOut(true); - else newpet->SetCheckedOut(false); - petition_list.AddPetition(newpet); - } - mysql_free_result(result); - } - else { - LogFile->write(EQEMuLog::Error, "Error in RefreshPetitionsFromDB query '%s': %s", query, errbuf); - safe_delete_array(query); + std::string query = "SELECT petid, charname, accountname, lastgm, petitiontext, " + "zone, urgency, charclass, charrace, charlevel, checkouts, " + "unavailables, ischeckedout, senttime, gmtext " + "FROM petitions ORDER BY petid"; + auto results = QueryDatabase(query); + if (!results.Success()) { + LogFile->write(EQEMuLog::Error, "Error in RefreshPetitionsFromDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } - return; + for (auto row = results.begin(); row != results.end(); ++row) { + newpet = new Petition(atoi(row[0])); + newpet->SetCName(row[1]); + newpet->SetAName(row[2]); + newpet->SetLastGM(row[3]); + newpet->SetPetitionText(row[4]); + newpet->SetZone(atoi(row[5])); + newpet->SetUrgency(atoi(row[6])); + newpet->SetClass(atoi(row[7])); + newpet->SetRace(atoi(row[8])); + newpet->SetLevel(atoi(row[9])); + newpet->SetCheckouts(atoi(row[10])); + newpet->SetUnavails(atoi(row[11])); + newpet->SetSentTime2(atol(row[13])); + newpet->SetGMText(row[14]); + + std::cout << "Petition " << row[0] << " pettime = " << newpet->GetSentTime() << std::endl; + + if (atoi(row[12]) == 1) + newpet->SetCheckedOut(true); + else + newpet->SetCheckedOut(false); + petition_list.AddPetition(newpet); + } + }