EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MissionDB Class Reference

#include "MissionDB.h"

Static Public Member Functions

MissionDB.cpp

memory object caching system for managing and saving ingame data specific to missions

: Allan

Date
: 24 June 2018
static void CreateOfferID (MissionOffer &data)
 
static void LoadOpenOffers (DBQueryResult &res)
 
static void LoadMiningData (DBQueryResult &res)
 
static void LoadMissionData (DBQueryResult &res)
 
static void LoadCourierData (DBQueryResult &res)
 
static void LoadClosedOffers (DBQueryResult &res)
 
static void LoadMissionBookMark (DBQueryResult &res, std::vector< int32 > &bmIDs)
 
static void UpdateMissionOffer (MissionOffer &data)
 
static void DeleteOffer (MissionOffer &data)
 
static void RemoveMissionItem (uint32 charID, uint16 typeID, uint32 qty)
 

Detailed Description

Definition at line 19 of file MissionDB.h.

Member Function Documentation

void MissionDB::CreateOfferID ( MissionOffer data)
static

Definition at line 42 of file MissionDB.cpp.

References MissionOffer::acceptFee, MissionOffer::agentID, MissionOffer::bonusISK, MissionOffer::bonusTime, MissionOffer::briefingID, DBerror::c_str(), MissionOffer::characterID, codelog, MissionOffer::courierAmount, MissionOffer::courierItemVolume, MissionOffer::courierTypeID, MissionOffer::dateAccepted, MissionOffer::dateIssued, MissionOffer::destinationID, MissionOffer::destinationOwnerID, MissionOffer::destinationSystemID, MissionOffer::destinationTypeID, MissionOffer::dungeonLocationID, MissionOffer::dungeonSolarSystemID, MissionOffer::expiryTime, MissionOffer::important, MissionOffer::missionID, MissionOffer::name, MissionOffer::offerID, MissionOffer::originID, MissionOffer::originOwnerID, MissionOffer::originSystemID, MissionOffer::remoteCompletable, MissionOffer::remoteOfferable, MissionOffer::rewardISK, MissionOffer::rewardItemID, MissionOffer::rewardItemQty, MissionOffer::rewardLP, sDatabase, MissionOffer::stateID, MissionOffer::storyline, and MissionOffer::typeID.

Referenced by Agent::MakeOffer().

43 {
44  DBerror err;
45  uint32 uid = 0;
46  if (!sDatabase.RunQueryLID(err, uid,
47  "INSERT INTO agtOffers(acceptFee, agentID, characterID, courierAmount, courierTypeID, courierVolume, dateAccepted, dateIssued, destinationID, destinationTypeID, "
48  " destinationOwnerID, destinationSystemID, expiryTime, important, storyline, missionID, briefingID, name, offerID, originID, originOwnerID, originSystemID,"
49  " remoteCompletable, remoteOfferable, rewardISK, rewardItemID, rewardItemQty, rewardLP, bonusISK, bonusTime, stateID, typeID, dungeonLocationID, dungeonSolarSystemID)"
50  " VALUES ("
51  " %u, %u, %u, %u, %u, %f, %f, %f, %u,"
52  " %u, %u, %u, %f, %i, %u,"
53  " %u, %u, '%s', %u, %u, %u, %u, %i,"
54  " %i, %u, %u, %u, %u, %u, %u, %u,"
55  " %u, %u, %u)",
58  data.missionID, data.briefingID, data.name.c_str(), data.offerID, data.originID, data.originOwnerID, data.originSystemID,
59  (data.remoteCompletable?1:0), (data.remoteOfferable?1:0), data.rewardISK, data.rewardItemID, data.rewardItemQty,data.rewardLP, data.bonusISK, data.bonusTime,
60  data.stateID, data.typeID, data.dungeonLocationID, data.dungeonSolarSystemID))
61  {
62  codelog(DATABASE__ERROR, "Failed to insert new MissionOffer: %s", err.c_str());
63  return;
64  }
65 
66  data.offerID = uid;
67 }
double dateAccepted
Definition: EVE_Missions.h:60
#define sDatabase
Definition: dbcore.h:199
uint16 missionID
Definition: EVE_Missions.h:34
uint32 agentID
Definition: EVE_Missions.h:42
double dateIssued
Definition: EVE_Missions.h:59
uint16 destinationTypeID
Definition: EVE_Missions.h:40
uint32 bonusISK
Definition: EVE_Missions.h:47
float courierItemVolume
Definition: EVE_Missions.h:57
uint32 characterID
Definition: EVE_Missions.h:45
std::string name
Definition: EVE_Missions.h:62
uint16 rewardLP
Definition: EVE_Missions.h:35
uint16 rewardItemQty
Definition: EVE_Missions.h:37
uint32 originSystemID
Definition: EVE_Missions.h:50
uint32 destinationSystemID
Definition: EVE_Missions.h:53
uint32 briefingID
Definition: EVE_Missions.h:43
uint32 dungeonLocationID
Definition: EVE_Missions.h:54
uint16 courierTypeID
Definition: EVE_Missions.h:38
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
uint16 bonusTime
Definition: EVE_Missions.h:33
double expiryTime
Definition: EVE_Missions.h:58
uint32 rewardISK
Definition: EVE_Missions.h:46
uint16 rewardItemID
Definition: EVE_Missions.h:36
unsigned __int32 uint32
Definition: eve-compat.h:50
bool remoteOfferable
Definition: EVE_Missions.h:28
uint32 destinationOwnerID
Definition: EVE_Missions.h:52
uint32 dungeonSolarSystemID
Definition: EVE_Missions.h:55
uint16 courierAmount
Definition: EVE_Missions.h:39
bool remoteCompletable
Definition: EVE_Missions.h:29
uint32 destinationID
Definition: EVE_Missions.h:51
uint32 acceptFee
Definition: EVE_Missions.h:56
Definition: dbcore.h:39
uint32 originID
Definition: EVE_Missions.h:48
uint32 originOwnerID
Definition: EVE_Missions.h:49
uint32 offerID
Definition: EVE_Missions.h:41

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::DeleteOffer ( MissionOffer data)
static

Definition at line 69 of file MissionDB.cpp.

References MissionOffer::offerID, and sDatabase.

70 {
71  DBerror err;
72  sDatabase.RunQuery(err, "DELETE FROM agtOffers WHERE offerID = %u", data.offerID);
73 }
#define sDatabase
Definition: dbcore.h:199
Definition: dbcore.h:39
uint32 offerID
Definition: EVE_Missions.h:41
void MissionDB::LoadClosedOffers ( DBQueryResult res)
static

Definition at line 97 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, GetFileTimeNow(), and sDatabase.

Referenced by MissionDataMgr::Populate().

98 {
99  if (!sDatabase.RunQuery(res,
100  "SELECT agentID, characterID, courierAmount, courierTypeID, dateAccepted, dateCompleted, dateIssued, destinationID, expiryTime, important, storyline, missionID, name,"
101  " offerID, originID, rewardISK, rewardItemID, rewardItemQty, rewardLP, stateID, typeID FROM agtOffers WHERE dateCompleted > 0 OR expiryTime > %f OR stateID > 2", GetFileTimeNow()))
102  codelog(DATABASE__ERROR, "Error in LoadClosedOffers query: %s", res.error.c_str());
103 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
double GetFileTimeNow()
Definition: utils_time.cpp:84
DBerror error
Definition: dbcore.h:69

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::LoadCourierData ( DBQueryResult res)
static

Definition at line 24 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, and sDatabase.

Referenced by MissionDataMgr::Populate().

25 {
26  if (!sDatabase.RunQuery(res,
27  "SELECT q.id, q.briefingID, q.name, q.level, q.typeID, q.important, q.storyline, q.itemTypeID, q.itemQty, it.volume, q.rewardISK, q.rewardItemID,"
28  " q.rewardItemQty, q.bonusISK, q.bonusTime, q.sysRange, q.raceID"
29  " FROM qstCourier AS q LEFT JOIN invTypes AS it ON it.typeID = itemTypeID WHERE briefingID > 0 AND itemTypeID > 0 AND rewardISK > 0"))
30  codelog(DATABASE__ERROR, "Error in LoadCourierData query: %s", res.error.c_str());
31 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
DBerror error
Definition: dbcore.h:69

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::LoadMiningData ( DBQueryResult res)
static

Definition at line 33 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, and sDatabase.

Referenced by MissionDataMgr::Populate().

34 {
35  if (!sDatabase.RunQuery(res,
36  "SELECT q.id, q.briefingID, q.name, q.level, q.typeID, q.important, q.storyline, q.itemTypeID, q.itemQty, it.volume, q.rewardISK, q.rewardItemID,"
37  " q.rewardItemQty, q.bonusISK, q.bonusTime, q.sysRange, q.raceID"
38  " FROM qstMining AS q LEFT JOIN invTypes AS it ON it.typeID = itemTypeID WHERE briefingID > 0 AND itemTypeID > 0 AND rewardISK > 0"))
39  codelog(DATABASE__ERROR, "Error in LoadMiningData query: %s", res.error.c_str());
40 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
DBerror error
Definition: dbcore.h:69

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::LoadMissionBookMark ( DBQueryResult res,
std::vector< int32 > &  bmIDs 
)
static

Definition at line 105 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, ListToINString(), and sDatabase.

106 {
107  std::string ids = "";
108  ListToINString(bmIDs, ids);
109  if (!sDatabase.RunQuery(res,
110  "SELECT bookmarkID, ownerID, itemID, typeID, memo, created, x, y, z, locationID, note, creatorID, folderID"
111  " FROM bookmarks WHERE bookmarkID IN (%s)", ids.c_str()))
112  {
113  codelog(DATABASE__ERROR, "Error in query: %s", res.error.c_str());
114  }
115 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
DBerror error
Definition: dbcore.h:69
void ListToINString(const std::vector< int32 > &ints, std::string &into, const char *if_empty)

Here is the call graph for this function:

void MissionDB::LoadMissionData ( DBQueryResult res)
static

Definition at line 16 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, and sDatabase.

Referenced by MissionDataMgr::Populate().

17 {
18  if (!sDatabase.RunQuery(res,
19  "SELECT id, briefingID, name, level, typeID, important, storyline, raceID, constellationID, corporationID, dungeonID,"
20  " rewardISK, rewardItemID, rewardISK, rewardItemQty, bonusISK, bonusTime FROM agtMissions WHERE briefingID > 0 AND rewardISK > 0"))
21  codelog(DATABASE__ERROR, "Error in LoadMissionData query: %s", res.error.c_str());
22 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
DBerror error
Definition: dbcore.h:69

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::LoadOpenOffers ( DBQueryResult res)
static

Definition at line 86 of file MissionDB.cpp.

References DBerror::c_str(), codelog, DBQueryResult::error, and sDatabase.

Referenced by MissionDataMgr::Populate().

87 {
88  if (!sDatabase.RunQuery(res,
89  "SELECT acceptFee, agentID, characterID, courierAmount, courierTypeID, courierVolume, dateAccepted, dateIssued, destinationID, destinationTypeID, destinationOwnerID, destinationSystemID,"
90  " expiryTime, important, storyline, missionID, briefingID, name, offerID, originID, originOwnerID, originSystemID, remoteCompletable, remoteOfferable, "
91  " rewardISK, rewardItemID, rewardItemQty, rewardLP, bonusISK, bonusTime, stateID, typeID, dungeonLocationID, dungeonSolarSystemID "
92  " FROM agtOffers WHERE dateCompleted = 0 AND stateID < 3"))
93  codelog(DATABASE__ERROR, "Error in LoadOpenOffers query: %s", res.error.c_str());
94 }
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
DBerror error
Definition: dbcore.h:69

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::RemoveMissionItem ( uint32  charID,
uint16  typeID,
uint32  qty 
)
static

Definition at line 117 of file MissionDB.cpp.

References DBResultRow::GetInt(), DBQueryResult::GetRow(), Profile::map, and sDatabase.

Referenced by MissionDataMgr::Process().

118 {
119  // this may get a bit complicated if the items are split.
120  DBQueryResult res;
121  sDatabase.RunQuery(res, "SELECT itemID, quantity FROM entity WHERE typeID = %u AND ownerID = %u", typeID, charID);
122 
123  DBResultRow row;
124  std::map<uint32, uint16> map;
125  while (res.GetRow(row)) {
126  // make map of all items of 'typeID'
127  map.emplace(row.GetInt(0), row.GetInt(1));
128  }
129 
130  DBerror err;
131  for (auto cur : map) {
132  if (qty < 1)
133  break;
134  if (cur.second <= qty) {
135  qty -= cur.second;
136  sDatabase.RunQuery(err, "DELETE FROM entity WHERE itemID = %u", cur.first);
137  } else if (cur.second > qty) {
138  sDatabase.RunQuery(err, "UPDATE entity SET quantity = %u WHERE itemID = %u", qty, cur.first);
139  qty = 0;
140  }
141  }
142 
143 }
#define sDatabase
Definition: dbcore.h:199
int32 GetInt(uint32 index) const
Definition: dbcore.cpp:635
bool GetRow(DBResultRow &into)
Definition: dbcore.cpp:552
Definition: dbcore.h:39

Here is the call graph for this function:

Here is the caller graph for this function:

void MissionDB::UpdateMissionOffer ( MissionOffer data)
static

Definition at line 76 of file MissionDB.cpp.

References DBerror::c_str(), codelog, MissionOffer::dateAccepted, MissionOffer::dateCompleted, MissionOffer::expiryTime, MissionOffer::offerID, sDatabase, and MissionOffer::stateID.

Referenced by Agent::DeleteOffer(), MissionDataMgr::Process(), and Agent::UpdateOffer().

77 {
78  DBerror err;
79  if (!sDatabase.RunQuery(err, "UPDATE agtOffers SET stateID = %u, dateAccepted = %f, dateCompleted = %f, expiryTime = %f WHERE offerID = %u",
80  data.stateID, data.dateAccepted, data.dateCompleted, data.expiryTime, data.offerID))
81  {
82  codelog(DATABASE__ERROR, "Failed to update MissionOffer: %s", err.c_str());
83  }
84 }
double dateAccepted
Definition: EVE_Missions.h:60
#define sDatabase
Definition: dbcore.h:199
const char * c_str() const
Definition: dbcore.h:48
#define codelog(type, fmt,...)
Definition: logsys.h:128
double expiryTime
Definition: EVE_Missions.h:58
double dateCompleted
Definition: EVE_Missions.h:61
Definition: dbcore.h:39
uint32 offerID
Definition: EVE_Missions.h:41

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files: