[Merchants] Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories (#3945)

* [Merchants] Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories

- Convert `ClearMerchantTemp()`, `DeleteMerchantTemp()`, and `SaveMerchantTemp()` to repositories.

* Update merchantlist_temp_repository.h
This commit is contained in:
Alex King 2024-01-13 00:47:25 -05:00 committed by GitHub
parent 1d7f39c13b
commit 5d1c59c95f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 11 deletions

View File

@ -54,6 +54,7 @@
#include "repositories/zone_repository.h"
#include "zone_store.h"
#include "repositories/merchantlist_temp_repository.h"
extern Client client;
@ -1221,8 +1222,9 @@ void Database::GetAccountFromID(uint32 id, char* oAccountName, int16* oStatus) {
*oStatus = Strings::ToInt(row[1]);
}
void Database::ClearMerchantTemp(){
QueryDatabase("DELETE FROM merchantlist_temp");
void Database::ClearMerchantTemp()
{
MerchantlistTempRepository::ClearTemporaryMerchantLists(*this);
}
bool Database::UpdateName(const char* oldname, const char* newname) {

View File

@ -16,6 +16,7 @@
#include "../../strings.h"
#include <ctime>
class BaseMerchantlistTempRepository {
public:
struct MerchantlistTemp {

View File

@ -44,7 +44,15 @@ public:
*/
// Custom extended repository methods here
static void ClearTemporaryMerchantLists(Database& db)
{
db.QueryDatabase(
fmt::format(
"TRUNCATE {}",
TableName()
)
);
}
};
#endif //EQEMU_MERCHANTLIST_TEMP_REPOSITORY_H

View File

@ -44,6 +44,7 @@
#include "../common/repositories/merc_inventory_repository.h"
#include "../common/repositories/merc_subtypes_repository.h"
#include "../common/repositories/npc_types_tint_repository.h"
#include "../common/repositories/merchantlist_temp_repository.h"
#include <ctime>
#include <iostream>
@ -2534,17 +2535,39 @@ void ZoneDatabase::LoadMercenaryEquipment(Merc* m)
}
}
void ZoneDatabase::SaveMerchantTemp(uint32 npcid, uint32 slot, uint32 zone_id, uint32 instance_id, uint32 item, uint32 charges){
void ZoneDatabase::SaveMerchantTemp(
uint32 npc_id,
uint32 slot_id,
uint32 zone_id,
uint32 instance_id,
uint32 item_id,
uint32 charges
)
{
auto e = MerchantlistTempRepository::NewEntity();
std::string query = StringFormat("REPLACE INTO merchantlist_temp (npcid, slot, zone_id, instance_id, itemid, charges) "
"VALUES(%d, %d, %d, %d, %d, %d)", npcid, slot, zone_id, instance_id, item, charges);
QueryDatabase(query);
e.npcid = npc_id;
e.slot = slot_id;
e.zone_id = zone_id;
e.instance_id = instance_id;
e.itemid = item_id;
e.charges = charges;
MerchantlistTempRepository::ReplaceOne(*this, e);
}
void ZoneDatabase::DeleteMerchantTemp(uint32 npcid, uint32 slot, uint32 zone_id, uint32 instance_id) {
std::string query = StringFormat("DELETE FROM merchantlist_temp WHERE npcid=%d AND slot=%d AND zone_id=%d AND instance_id=%d",
npcid, slot, zone_id, instance_id);
QueryDatabase(query);
void ZoneDatabase::DeleteMerchantTemp(uint32 npc_id, uint32 slot_id, uint32 zone_id, uint32 instance_id)
{
MerchantlistTempRepository::DeleteWhere(
*this,
fmt::format(
"`npcid` = {} AND `slot` = {} AND `zone_id` = {} AND `instance_id` = {}",
npc_id,
slot_id,
zone_id,
instance_id
)
);
}
//New functions for timezone