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

View File

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

View File

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

View File

@ -44,6 +44,7 @@
#include "../common/repositories/merc_inventory_repository.h" #include "../common/repositories/merc_inventory_repository.h"
#include "../common/repositories/merc_subtypes_repository.h" #include "../common/repositories/merc_subtypes_repository.h"
#include "../common/repositories/npc_types_tint_repository.h" #include "../common/repositories/npc_types_tint_repository.h"
#include "../common/repositories/merchantlist_temp_repository.h"
#include <ctime> #include <ctime>
#include <iostream> #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) " e.npcid = npc_id;
"VALUES(%d, %d, %d, %d, %d, %d)", npcid, slot, zone_id, instance_id, item, charges); e.slot = slot_id;
QueryDatabase(query); 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) { void ZoneDatabase::DeleteMerchantTemp(uint32 npc_id, uint32 slot_id, 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); MerchantlistTempRepository::DeleteWhere(
QueryDatabase(query); *this,
fmt::format(
"`npcid` = {} AND `slot` = {} AND `zone_id` = {} AND `instance_id` = {}",
npc_id,
slot_id,
zone_id,
instance_id
)
);
} }
//New functions for timezone //New functions for timezone