Update trader db calls for character_id

This commit is contained in:
Mitch Freeman 2025-06-06 20:55:00 -03:00
parent c86ddca0b9
commit af500b14f6
4 changed files with 25 additions and 19 deletions

View File

@ -835,7 +835,7 @@ void Client::CompleteConnect()
if (is_first_login) { if (is_first_login) {
e.first_login = time(nullptr); e.first_login = time(nullptr);
TraderRepository::DeleteWhere(database, fmt::format("`char_id` = '{}'", CharacterID())); TraderRepository::DeleteWhere(database, fmt::format("`character_id` = '{}'", CharacterID()));
BuyerRepository::DeleteBuyer(database, CharacterID()); BuyerRepository::DeleteBuyer(database, CharacterID());
LogTradingDetail( LogTradingDetail(
"Removed trader abd buyer entries for Character ID {} on first logon to ensure table consistency.", "Removed trader abd buyer entries for Character ID {} on first logon to ensure table consistency.",

View File

@ -1783,7 +1783,13 @@ static void UpdateTraderCustomerPriceChanged(
LogTrading("Sending price updates to customer [{}]", customer->GetName()); LogTrading("Sending price updates to customer [{}]", customer->GetName());
auto it = std::find_if(trader_items.begin(), trader_items.end(), [&](TraderRepository::Trader x){ return x.item_id == item->ID;}); auto it = std::find_if(
trader_items.begin(),
trader_items.end(),
[&](TraderRepository::Trader x) {
return x.item_id == item->ID;
}
);
std::unique_ptr<EQ::ItemInstance> inst( std::unique_ptr<EQ::ItemInstance> inst(
database.CreateItem( database.CreateItem(
it->item_id, it->item_id,

View File

@ -309,19 +309,19 @@ void ZoneDatabase::DeleteWorldContainer(uint32 parent_id, uint32 zone_id)
); );
} }
std::unique_ptr<EQ::ItemInstance> ZoneDatabase::LoadSingleTraderItem(uint32 char_id, const std::string &serial_number) std::unique_ptr<EQ::ItemInstance> ZoneDatabase::LoadSingleTraderItem(uint32 character_id, const std::string &unique_item_id)
{ {
auto results = TraderRepository::GetWhere( auto results = TraderRepository::GetWhere(
database, database,
fmt::format( fmt::format(
"`char_id` = '{}' AND `item_sn` = '{}' ORDER BY slot_id", "`character_id` = '{}' AND `item_unique_id` = '{}' ORDER BY slot_id",
char_id, character_id,
serial_number unique_item_id
) )
); );
if (results.empty()) { if (results.empty()) {
LogTrading("Could not find item serial number {} for character id {}", serial_number, char_id); LogTrading("Could not find item serial number {} for character id {}", unique_item_id, character_id);
return nullptr; return nullptr;
} }
@ -357,7 +357,7 @@ std::unique_ptr<EQ::ItemInstance> ZoneDatabase::LoadSingleTraderItem(uint32 char
} }
inst->SetCharges(charges); inst->SetCharges(charges);
inst->SetUniqueID(serial_number); inst->SetUniqueID(unique_item_id);
//FIX inst->SetMerchantSlot(serial_number); //FIX inst->SetMerchantSlot(serial_number);
inst->SetPrice(cost); inst->SetPrice(cost);
@ -368,9 +368,9 @@ std::unique_ptr<EQ::ItemInstance> ZoneDatabase::LoadSingleTraderItem(uint32 char
return std::move(inst); return std::move(inst);
} }
void ZoneDatabase::UpdateTraderItemPrice(int char_id, uint32 item_id, uint32 charges, uint32 new_price) { void ZoneDatabase::UpdateTraderItemPrice(int character_id, uint32 item_id, uint32 charges, uint32 new_price) {
LogTrading("ZoneDatabase::UpdateTraderPrice([{}], [{}], [{}], [{}])", char_id, item_id, charges, new_price); LogTrading("ZoneDatabase::UpdateTraderPrice([{}], [{}], [{}], [{}])", character_id, item_id, charges, new_price);
const EQ::ItemData *item = database.GetItem(item_id); const EQ::ItemData *item = database.GetItem(item_id);
if(!item) { if(!item) {
@ -378,20 +378,20 @@ void ZoneDatabase::UpdateTraderItemPrice(int char_id, uint32 item_id, uint32 cha
} }
if (new_price == 0) { if (new_price == 0) {
LogTrading("Removing Trader items from the DB for char_id [{}], item_id [{}]", char_id, item_id); LogTrading("Removing Trader items from the DB for char_id [{}], item_id [{}]", character_id, item_id);
auto results = TraderRepository::DeleteWhere( auto results = TraderRepository::DeleteWhere(
database, database,
fmt::format( fmt::format(
"`char_id` = '{}' AND `item_id` = {}", "`character_id` = '{}' AND `item_id` = {}",
char_id, character_id,
item_id item_id
) )
); );
if (!results) { if (!results) {
LogDebug("[CLIENT] Failed to remove trader item(s): [{}] for char_id: [{}]", LogDebug("[CLIENT] Failed to remove trader item(s): [{}] for char_id: [{}]",
item_id, item_id,
char_id character_id
); );
} }
@ -399,23 +399,23 @@ void ZoneDatabase::UpdateTraderItemPrice(int char_id, uint32 item_id, uint32 cha
} }
if (!item->Stackable) { if (!item->Stackable) {
auto results = TraderRepository::UpdateItem(database, char_id, new_price, item_id, charges); auto results = TraderRepository::UpdateItem(database, character_id, new_price, item_id, charges);
if (!results) { if (!results) {
LogTrading( LogTrading(
"Failed to update price for trader item [{}] for char_id: [{}]", "Failed to update price for trader item [{}] for char_id: [{}]",
item_id, item_id,
char_id character_id
); );
} }
return; return;
} }
auto results = TraderRepository::UpdateItem(database, char_id, new_price, item_id, 0); auto results = TraderRepository::UpdateItem(database, character_id, new_price, item_id, 0);
if (!results) { if (!results) {
LogTrading( LogTrading(
"Failed to update price for trader item [{}] for char_id: [{}]", "Failed to update price for trader item [{}] for char_id: [{}]",
item_id, item_id,
char_id character_id
); );
} }
} }

View File

@ -390,7 +390,7 @@ public:
/* Traders */ /* Traders */
void SaveTraderItem(uint32 char_id,uint32 itemid,uint32 uniqueid, int32 charges,uint32 itemcost,uint8 slot); void SaveTraderItem(uint32 char_id,uint32 itemid,uint32 uniqueid, int32 charges,uint32 itemcost,uint8 slot);
void UpdateTraderItemCharges(int char_id, uint32 ItemInstID, int32 charges); void UpdateTraderItemCharges(int char_id, uint32 ItemInstID, int32 charges);
void UpdateTraderItemPrice(int char_id, uint32 item_id, uint32 charges, uint32 new_price); void UpdateTraderItemPrice(int character_id, uint32 item_id, uint32 charges, uint32 new_price);
void DeleteTraderItem(uint32 char_id); void DeleteTraderItem(uint32 char_id);
void DeleteTraderItem(uint32 char_id,uint16 slot_id); void DeleteTraderItem(uint32 char_id,uint16 slot_id);