EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
PosMgrDB.cpp
Go to the documentation of this file.
1 
10 #include "eve-server.h"
11 
12 #include "pos/PosMgrDB.h"
13 #include "pos/Structure.h"
14 #include "../DataClasses.h"
15 
16 
18  DBerror err;
19  sDatabase.RunQuery(err, "DELETE FROM posStructureData WHERE itemID = %u", itemID);
20  sDatabase.RunQuery(err, "DELETE FROM posCustomsOfficeData WHERE itemID = %u", itemID);
21  sDatabase.RunQuery(err, "DELETE FROM posJumpBridgeData WHERE itemID = %u", itemID);
22  sDatabase.RunQuery(err, "DELETE FROM posTowerData WHERE itemID = %u", itemID);
23 }
24 
26  DBQueryResult res;
27  if (!sDatabase.RunQuery(res,
28  "SELECT attributeID, valueFloat FROM dgmTypeAttributes"
29  " WHERE typeID = %u AND attributeID = %u", typeID, AttrCapacity))
30  {
31  codelog(DATABASE__ERROR, "Error in GetSiloCapacityForType query: %s", res.error.c_str());
32  return nullptr;
33  }
34 
35  return DBResultToCRowset(res);
36 }
37 
39 {
41  DBQueryResult res;
42  if (!sDatabase.RunQuery(res,
43  "SELECT e.typeID, e.itemID, e.locationID"
44  " FROM entity AS e"
45  " LEFT JOIN invTypes AS t USING (typeID)"
46  " LEFT JOIN posTowerData AS d USING (itemID)"// we're not looking for towers in cargo
47  " WHERE e.ownerID = %u AND t.groupID = %u", corpID, EVEDB::invGroups::Control_Tower))
48  {
49  codelog(DATABASE__ERROR, "Error in GetCorpControlTowers query: %s", res.error.c_str());
50  return nullptr;
51  }
52 
53  return DBResultToCRowset(res);
54 }
55 
57 
58  if (!sDatabase.RunQuery(res,
59  "SELECT controlTowerTypeID, resourceTypeID, purpose, quantity, minSecurityLevel, factionID, wormholeClassID"
60  " FROM invControlTowerResources"
61  " WHERE purpose = 1 OR purpose = 4"))
62  {
63  codelog(DATABASE__ERROR, "Error in GetControlTowerFuelRequirements query: %s", res.error.c_str());
64  }
65 }
66 
68 {
69  if (!sDatabase.RunQuery(res,
70  "SELECT systemID, itemID"
71  " FROM posJumpBridgeData WHERE corpID = %u AND toItemID = 0", corpID))
72  {
73  codelog(DATABASE__ERROR, "Error in GetLinkableJumpArrays query: %s", res.error.c_str());
74  }
75 }
76 
78 {
79  if (!sDatabase.RunQuery(res,
80  "SELECT itemID, systemID, toItemID, toTypeID, toSystemID"
81  " FROM posJumpBridgeData WHERE corpID = %u", corpID))
82  {
83  codelog(DATABASE__ERROR, "Error in GetCorpJumpArrays query: %s", res.error.c_str());
84  }
85 }
86 
88 {
89  if (!sDatabase.RunQuery(res,
90  "SELECT itemID, systemID, toItemID, toTypeID, toSystemID"
91  " FROM posJumpBridgeData WHERE allyID = %u", allyID))
92  {
93  codelog(DATABASE__ERROR, "Error in GetAllianceJumpArrays query: %s", res.error.c_str());
94  }
95 }
96 
98 {
99  DBQueryResult res;
100  if (!sDatabase.RunQuery(res,
101  "SELECT towerID, anchorpointID, state, status, timestamp, canUse, canView, canTake FROM posStructureData"
102  " WHERE itemID = %u", data.itemID))
103  {
104  codelog(DATABASE__ERROR, "Error in GetBaseData query: %s", res.error.c_str());
105  return false;
106  }
107 
108  DBResultRow row;
109  if (!res.GetRow(row))
110  return false;
111  data.towerID = row.GetInt(0);
112  data.anchorpointID = row.GetInt(1);
113  data.state = row.GetInt(2);
114  data.status = row.GetInt(3);
115  data.timestamp = row.GetInt64(4);
116  data.use = row.GetInt(5);
117  data.view = row.GetInt(6);
118  data.take = row.GetInt(7);
119  return true;
120 }
121 
123 {
124  DBerror err;
125  sDatabase.RunQuery(err,
126  "INSERT INTO posStructureData "
127  "(itemID, towerID, anchorpointID, state, status, timestamp, canUse, canView, canTake)"
128  " VALUES ( %i, %i, %i, %i, %i, %li, %i, %i, %i)",
129  data.itemID, data.towerID, data.anchorpointID, data.state, data.status, data.timestamp, data.use, data.view, data.take);
130 }
131 
133 {
134  DBerror err;
135  sDatabase.RunQuery(err,
136  "UPDATE posStructureData SET state=%i, status=%i, timestamp=%li WHERE itemID = %i",
137  data.state, data.status, data.timestamp, data.itemID);
138 }
139 
141 {
142  DBQueryResult res;
143  if (!sDatabase.RunQuery(res,
144  "SELECT"
145  " harmonic, standing, standingOwnerID, statusDrop, corpWar, allyStandings, showInCalendar,"
146  " sendFuelNotifications, allowCorp, allowAlliance, password, anchor, unanchor, online, offline, status"
147  " FROM posTowerData"
148  " WHERE itemID = %i", sData.itemID))
149  {
150  codelog(DATABASE__ERROR, "Error in GetTowerData query: %s", res.error.c_str());
151  return false;
152  }
153 
154  DBResultRow row;
155  if (!res.GetRow(row)) {
156  tData = EVEPOS::TowerData();
157  return false;
158  }
159  tData.harmonic = row.GetInt(0);
160  tData.standing = row.GetFloat(1);
161  tData.standingOwnerID = row.GetInt(2);
162  tData.statusDrop = row.GetInt(3);
163  tData.corpWar = row.GetInt(4);
164  tData.allyStandings = row.GetInt(5);
165  tData.showInCalendar = row.GetInt(6);
166  tData.sendFuelNotifications = row.GetInt(7);
167  tData.allowCorp = row.GetInt(8);
168  tData.allowAlliance = row.GetInt(9);
169  tData.password = row.GetText(10);
170  tData.anchor = row.GetInt(11);
171  tData.unanchor = row.GetInt(12);
172  tData.online = row.GetInt(13);
173  tData.offline = row.GetInt(14);
174  tData.status = row.GetFloat(15);
175  return true;
176 }
177 
179 {
180  DBerror err;
181  sDatabase.RunQuery(err,
182  "INSERT INTO posTowerData"
183  " (itemID, harmonic, standing, standingOwnerID, status, statusDrop, corpWar, allyStandings, showInCalendar,"
184  " sendFuelNotifications, allowCorp, allowAlliance, anchor, unanchor, online, offline)"
185  " VALUES ( %i, %i, %f, %i, %f, %u, %u, %u, %u, %u, %u, %u, %i, %i, %i,%i)",
186  sData.itemID, tData.harmonic, tData.standing, tData.standingOwnerID, tData.status, tData.statusDrop, tData.corpWar, tData.allyStandings,
187  tData.showInCalendar, tData.sendFuelNotifications, tData.allowCorp, tData.allowAlliance,
188  tData.anchor, tData.unanchor, tData.online, tData.offline);
189 }
190 
192 {
193  DBQueryResult res;
194  if (!sDatabase.RunQuery(res,
195  "SELECT towerID, corpID, allyID, systemID, toItemID, toSystemID, toTypeID, password, allowCorp, allowAlliance"
196  " FROM posJumpBridgeData WHERE itemID = %i", data.itemID))
197  {
198  codelog(DATABASE__ERROR, "Error in GetBridgeData query: %s", res.error.c_str());
199  return false;
200  }
201 
202  DBResultRow row;
203  if (!res.GetRow(row)) {
204  data = EVEPOS::JumpBridgeData();
205  return false;
206  }
207 
208  data.towerID = row.GetInt(0);
209  data.corpID = row.GetInt(1);
210  data.allyID = row.GetInt(2);
211  data.systemID = row.GetInt(3);
212  data.toItemID = row.GetInt(4);
213  data.toSystemID = row.GetInt(5);
214  data.toTypeID = row.GetInt(6);
215  data.password = row.GetText(7);
216  data.allowCorp = row.GetInt(8);
217  data.allowAlliance = row.GetInt(9);
218 
219  return true;
220 }
221 
223 {
224  std::string escPass;
225  sDatabase.DoEscapeString(escPass, data.password);
226  DBerror err;
227  sDatabase.RunQuery(err,
228  "INSERT INTO posJumpBridgeData(itemID, towerID, corpID, allyID, systemID, toItemID, toTypeID, toSystemID, password, allowCorp, allowAlliance)"
229  " VALUES (%i,%i,%i,%i,%i,%i,%i,%i,'%s',%u,%u)",
230  data.itemID, data.towerID, data.corpID, data.allyID, data.systemID, data.toItemID, data.toTypeID,
231  data.toSystemID, escPass.c_str(), data.allowCorp, data.allowAlliance);
232 }
233 
235 {
236  std::string escPass;
237  sDatabase.DoEscapeString(escPass, data.password);
238  DBerror err;
239  sDatabase.RunQuery(err,
240  "UPDATE posJumpBridgeData"
241  " SET allyID=%i, toItemID=%i, toTypeID=%i, toSystemID=%i, password='%s', allowCorp=%u, allowAlliance=%u"
242  " WHERE itemID=%i",
243  data.allyID, data.toItemID, data.toTypeID, data.toSystemID, escPass.c_str(), data.allowCorp, data.allowAlliance, data.itemID);
244 }
245 
247 {
248  DBerror err;
249  sDatabase.RunQuery(err,
250  "UPDATE posJumpBridgeData SET "
251  " toItemID=%i, toTypeID=27897, toSystemID=%i "
252  " WHERE itemID=%i",
253  toItemID, toSystemID, itemID);
254 }
255 
257 {
258  DBerror err;
259  sDatabase.RunQuery(err,
260  "UPDATE posJumpBridgeData SET "
261  " toItemID=0, toTypeID=0, toSystemID=0 "
262  " WHERE itemID=%i",
263  itemID);
264 }
265 
267 {
268  return true;
269 }
270 
272 {
273  /*
274  bool active;
275  int32 itemID;
276  int16 reaction; // bp typeID?
277  std::map<uint32, EVEPOS::POS_Connections> connections; // itemID, data
278  std::map<uint32, EVEPOS::POS_Resource> demands; // itemID, resourceData(typeID/quantity)
279  std::map<uint32, EVEPOS::POS_Resource> supplies; // itemID, resourceData(typeID/quantity)
280 */
281 
282 }
283 
285 {
286 
287 }
288 
290 {
291  DBQueryResult res;
292  if (!sDatabase.RunQuery(res,
293  "SELECT ownerID, allowAlly, allowStandings, selectedHour, standingValue,"
294  " corpTax, allyTax, horribleTax, badTax, neutTax, goodTax, highTax, timestamp,"
295  " rotX, rotY, rotZ, orbitalHackerProgress, orbitalHackerID, state, status, level"
296  " FROM posCustomsOfficeData WHERE itemID = %i", cData.itemID))
297  {
298  codelog(DATABASE__ERROR, "Error in GetCustomsData query: %s", res.error.c_str());
299  return false;
300  }
301 
302  DBResultRow row;
303  if (!res.GetRow(row))
304  return false;
305 
306  cData.ownerID = row.GetInt(0);
307  cData.allowAlliance = row.GetBool(1);
308  cData.allowStandings = row.GetBool(2);
309  cData.selectedHour = row.GetInt(3);
310  cData.standingValue = row.GetInt(4);
311 
312  using namespace EVEPOS;
313  std::map<uint8, float> taxRateValues;
314  taxRateValues[TaxValues::Corp] = row.GetFloat(5);
315  taxRateValues[TaxValues::Alliance] = row.GetFloat(6);
316  taxRateValues[TaxValues::StandingHorrible] = row.GetFloat(7);
317  taxRateValues[TaxValues::StandingBad] = row.GetFloat(8);
318  taxRateValues[TaxValues::StandingNeutral] = row.GetFloat(9);
319  taxRateValues[TaxValues::StandingGood] = row.GetFloat(10);
320  taxRateValues[TaxValues::StandingHigh] = row.GetFloat(11);
321  cData.taxRateValues = taxRateValues;
322  cData.timestamp = row.GetInt64(12);
323  oData.rotation = GVector(row.GetFloat(13), row.GetFloat(14), row.GetFloat(15));
324  oData.orbitalHackerProgress = row.GetInt(16);
325  oData.orbitalHackerID = row.GetInt(17);
326  cData.state = row.GetInt(18);
327  cData.status = row.GetInt(19);
328  oData.level = row.GetInt(20);
329  //oData.standingOwnerID = row.GetInt(19); // not sure what this is for
330 
331  return true;
332 }
333 
335 {
336  using namespace EVEPOS;
337  DBerror err;
338  sDatabase.RunQuery(err,
339  "INSERT INTO posCustomsOfficeData (itemID, ownerID, allowAlly, allowStandings, selectedHour, standingValue,"
340  " corpTax, allyTax, horribleTax, badTax, neutTax, goodTax, highTax, timestamp,"
341  " rotX, rotY, rotZ, orbitalHackerProgress, orbitalHackerID, state, status, level)"
342  " VALUES (%u, %u, %u, %u, %u, %u, %f, %f, %f, %f, %f, %f, %f, %li, %f, %f, %f, %f, %u, %i, %i, %i)",
343  cData.itemID, cData.ownerID, cData.allowAlliance, cData.allowStandings, cData.selectedHour, cData.standingValue,
346  cData.taxRateValues[TaxValues::StandingHigh], cData.timestamp, oData.rotation.x, oData.rotation.y, oData.rotation.z,
347  oData.orbitalHackerProgress, oData.orbitalHackerID, cData.state, cData.status, oData.level);
348 }
349 
351 {
352  using namespace EVEPOS;
353  DBerror err;
354  sDatabase.RunQuery(err,
355  "UPDATE posCustomsOfficeData"
356  " SET allowAlly=%u, allowStandings=%u, selectedHour=%u, standingValue=%u,"
357  " corpTax=%f, allyTax=%f, horribleTax=%f, badTax=%f, neutTax=%f, goodTax=%f, highTax=%f, timestamp=%li,"
358  " orbitalHackerProgress=%f, orbitalHackerID=%u, state=%i, status=%i"
359  " WHERE itemID=%i",
360  cData.allowAlliance, cData.allowStandings, cData.selectedHour, cData.standingValue,
364  cData.state, cData.status, cData.itemID);
365 }
366 
367 
368 /*
369  * CREATE TABLE posJumpBridgeData (
370  * itemID int(10) NOT NULL DEFAULT '0',
371  * corpID int(10) NOT NULL DEFAULT '0',
372  * allyID int(10) NOT NULL DEFAULT '0',
373  * towerID int(10) NOT NULL DEFAULT '0',
374  * systemID int(10) NOT NULL DEFAULT '0',
375  * toItemID int(10) NOT NULL DEFAULT '0',
376  * toTypeID int(10) NOT NULL DEFAULT '0',
377  * toSystemID int(10) NOT NULL DEFAULT '0',
378  * password varchar(50) NOT NULL,
379  * allowCorp tinyint(1) NOT NULL DEFAULT '0',
380  * allowAlliance tinyint(1) NOT NULL DEFAULT '0',
381  * PRIMARY KEY (itemID)
382  * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='POS Jump Bridge Data';
383  *
384  */
385 
387 {
388  DBerror err;
389  sDatabase.RunQuery(err, "UPDATE posStructureData SET timestamp=%li WHERE itemID = %u", data.timestamp, itemID);
390 }
391 
392 
394 {
395  std::string nameEsc;
396  sDatabase.DoEscapeString(nameEsc, data.password);
397  DBerror err;
398  sDatabase.RunQuery(err,
399  "UPDATE posTowerData"
400  " SET allowAlliance=%i, allowCorp=%i, password = '%s'"
401  " WHERE itemID = %u", data.allowAlliance, data.allowCorp, nameEsc.c_str(), itemID);
402 }
403 
405 {
406  std::string nameEsc;
407  sDatabase.DoEscapeString(nameEsc, data.password);
408  DBerror err;
409  sDatabase.RunQuery(err, "UPDATE posTowerData SET password = '%s' WHERE itemID = %u", nameEsc.c_str(), itemID);
410 }
411 
413 {
414  DBerror err;
415  sDatabase.RunQuery(err,
416  "UPDATE posTowerData"
417  " SET showInCalendar=%i, sendFuelNotifications=%i"
418  " WHERE itemID = %u", data.showInCalendar, data.sendFuelNotifications, itemID);
419 }
420 
422 {
423  DBerror err;
424  sDatabase.RunQuery(err,
425  "UPDATE posTowerData"
426  " SET standing=%f, statusDrop=%i, corpWar=%i, allyStandings=%i WHERE itemID = %u",
427  data.standing, data.statusDrop, data.corpWar, data.allyStandings, itemID);
428 }
429 
431 {
432  std::string nameEsc;
433  sDatabase.DoEscapeString(nameEsc, data.password);
434  DBerror err;
435  sDatabase.RunQuery(err, "UPDATE posTowerData SET harmonic=%i, password = '%s' WHERE itemID = %i", data.harmonic, nameEsc.c_str(), itemID);
436 }
437 
439 {
440  DBerror err;
441  sDatabase.RunQuery(err,
442  "UPDATE posTowerData"
443  " SET allowCorp=%i, allowAlliance=%i"
444  " WHERE itemID = %u", data.allowCorp, data.allowAlliance, itemID);
445 }
446 
448 {
449  DBerror err;
450  sDatabase.RunQuery(err,
451  "UPDATE posStructureData"
452  " SET canUse=%i, canView=%i, canTake=%i"
453  " WHERE itemID = %u", data.use, data.view, data.take, itemID);
454 }
455 
457 {
458  DBerror err;
459  sDatabase.RunQuery(err,
460  "UPDATE posTowerData"
461  " SET anchor=%f, unanchor=%i, online=%i, offline=%i WHERE itemID = %u",
462  data.anchor, data.unanchor, data.online, data.offline, itemID);
463 }
Base Python wire object.
Definition: PyRep.h:66
float orbitalHackerProgress
Definition: EVE_POS.h:78
#define sDatabase
Definition: dbcore.h:199
void UpdateAccess(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:393
const char * GetText(uint32 index) const
Definition: dbcore.h:104
int32 standingOwnerID
Definition: EVE_POS.h:53
bool GetCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:289
float GetFloat(uint32 index) const
Definition: dbcore.cpp:682
uint32 orbitalHackerID
Definition: EVE_POS.h:76
PyObjectEx * DBResultToCRowset(DBQueryResult &result)
Definition: EVEDBUtils.cpp:402
int32 harmonic
Definition: EVE_POS.h:52
int32 GetInt(uint32 index) const
Definition: dbcore.cpp:635
GVector rotation
Definition: EVE_POS.h:79
bool allowAlliance
Definition: EVE_POS.h:41
void UpdateReactorData(ReactorData *pData, EVEPOS::StructureData &sData)
Definition: PosMgrDB.cpp:284
void SaveCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:334
void UpdateBaseData(EVEPOS::StructureData &data)
Definition: PosMgrDB.cpp:132
PyRep * GetSiloCapacityForType(uint16 typeID)
Definition: PosMgrDB.cpp:25
void UpdateCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:350
void UpdateBridgeData(EVEPOS::JumpBridgeData &data)
Definition: PosMgrDB.cpp:234
static void GetCorpJumpArrays(uint32 corpID, DBQueryResult &res)
Definition: PosMgrDB.cpp:77
void SaveReactorData(ReactorData *pData, EVEPOS::StructureData &sData)
Definition: PosMgrDB.cpp:271
void UpdateDeployFlags(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:456
GaFloat x
Definition: GaTypes.h:207
bool sendFuelNotifications
Definition: EVE_POS.h:46
bool GetReactorData(ReactorData *pData, EVEPOS::StructureData &sData)
Definition: PosMgrDB.cpp:266
signed __int32 int32
Definition: eve-compat.h:49
bool GetRow(DBResultRow &into)
Definition: dbcore.cpp:552
bool GetBool(uint32 index) const
Definition: dbcore.cpp:647
static void GetLinkableJumpArrays(uint32 corpID, DBQueryResult &res)
Definition: PosMgrDB.cpp:67
void UpdateSentry(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:421
std::string password
Definition: EVE_POS.h:56
void SaveBaseData(EVEPOS::StructureData &data)
Definition: PosMgrDB.cpp:122
const char * c_str() const
Definition: dbcore.h:48
void SaveBridgeData(EVEPOS::JumpBridgeData &data)
Definition: PosMgrDB.cpp:222
void UpdateNotify(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:412
#define codelog(type, fmt,...)
Definition: logsys.h:128
bool GetTowerData(EVEPOS::TowerData &tData, EVEPOS::StructureData &sData)
Definition: PosMgrDB.cpp:140
float standing
Definition: EVE_POS.h:55
void SaveTowerData(EVEPOS::TowerData &tData, EVEPOS::StructureData &sData)
Definition: PosMgrDB.cpp:178
void UpdatePermission(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:438
std::map< uint8, float > taxRateValues
Definition: EVE_POS.h:25
static void GetAllianceJumpArrays(uint32 allyID, DBQueryResult &res)
Definition: PosMgrDB.cpp:87
void DeleteData(uint32 itemID)
Definition: PosMgrDB.cpp:17
std::string password
Definition: EVE_POS.h:70
unsigned __int32 uint32
Definition: eve-compat.h:50
GaFloat y
Definition: GaTypes.h:207
DBerror error
Definition: dbcore.h:69
void UninstallBridgeLink(uint32 itemID)
Definition: PosMgrDB.cpp:256
bool showInCalendar
Definition: EVE_POS.h:45
void UpdatePassword(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:404
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()() itemID(attributeID)-Retrieves attribute value." ) COMMAND( setattr
bool GetBaseData(EVEPOS::StructureData &data)
Definition: PosMgrDB.cpp:97
bool allyStandings
Definition: EVE_POS.h:42
void UpdateHarmonicAndPassword(int32 itemID, EVEPOS::TowerData &data)
Definition: PosMgrDB.cpp:430
void UpdateUsageFlags(int32 itemID, EVEPOS::StructureData &data)
Definition: PosMgrDB.cpp:447
void InstallBridgeLink(uint32 itemID, uint32 toSystemID, uint32 toItemID)
Definition: PosMgrDB.cpp:246
Definition: gpoint.h:70
void UpdateTimeStamp(int32 itemID, EVEPOS::StructureData &data)
Definition: PosMgrDB.cpp:386
void GetControlTowerFuelRequirements(DBQueryResult &res)
Definition: PosMgrDB.cpp:56
int64 GetInt64(uint32 index) const
Definition: dbcore.cpp:670
unsigned __int16 uint16
Definition: eve-compat.h:48
PyRep * GetCorpControlTowers(uint32 corpID)
Definition: PosMgrDB.cpp:38
bool GetBridgeData(EVEPOS::JumpBridgeData &data)
Definition: PosMgrDB.cpp:191
Definition: EVE_POS.h:14
Definition: dbcore.h:39
GaFloat z
Definition: GaTypes.h:207