EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ObjCacheDB.cpp
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24 */
27 #include "eve-server.h"
28 
29 #include "cache/ObjCacheDB.h"
30 
32 {
33  //register all the generators
34  m_generators["charNewExtraCreationInfo.raceskills"] = &ObjCacheDB::Generate_CharNewExtraRaceSkills;
35  m_generators["charNewExtraCreationInfo.careerskills"] = &ObjCacheDB::Generate_CharNewExtraCareerSkills;
36  m_generators["charNewExtraCreationInfo.careers"] = &ObjCacheDB::Generate_CharNewExtraCareers;
37  m_generators["charNewExtraCreationInfo.specialityskills"] = &ObjCacheDB::Generate_CharNewExtraSpecialitySkills;
38  m_generators["charNewExtraCreationInfo.specialities"] = &ObjCacheDB::Generate_CharNewExtraSpecialities;
39 
40  m_generators["config.BulkData.paperdollResources"] = &ObjCacheDB::Generate_PaperdollResources;
41  m_generators["config.BulkData.paperdollColors"] = &ObjCacheDB::Generate_PaperdollColors;
42  m_generators["config.BulkData.paperdollModifierLocations"] = &ObjCacheDB::Generate_PaperdollModifierLocations;
43  m_generators["config.BulkData.paperdollSculptingLocations"] = &ObjCacheDB::Generate_PaperdollSculptingLocations;
44  m_generators["config.BulkData.paperdollColorNames"] = &ObjCacheDB::Generate_PaperdollColorNames;
45  m_generators["config.BulkData.paperdollColorRestrictions"] = &ObjCacheDB::Generate_PaperdollColorRestrictions;
46 
47  m_generators["config.BulkData.bloodlineNames"] = &ObjCacheDB::Generate_BloodlineNames;
48  m_generators["config.BulkData.locationscenes"] = &ObjCacheDB::Generate_Locationscenes;
49  m_generators["config.BulkData.overviewDefaults"] = &ObjCacheDB::Generate_OverviewDefaults;
50  m_generators["config.BulkData.schematicspinmap"] = &ObjCacheDB::Generate_Schematicspinmap;
51  m_generators["config.BulkData.overviewDefaultGroups"] = &ObjCacheDB::Generate_OverviewDefaultGroups;
52  m_generators["config.BulkData.schematics"] = &ObjCacheDB::Generate_Schematics;
53  m_generators["config.BulkData.schematicstypemap"] = &ObjCacheDB::Generate_Schematicstypemap;
54  m_generators["config.BulkData.sounds"] = &ObjCacheDB::Generate_Sounds;
55  m_generators["config.BulkData.invtypematerials"] = &ObjCacheDB::Generate_Invtypematerials;
56  m_generators["config.BulkData.ownericons"] = &ObjCacheDB::Generate_Ownericons;
57  m_generators["config.BulkData.icons"] = &ObjCacheDB::Generate_Icons;
58 
59  m_generators["config.BulkData.billtypes"] = &ObjCacheDB::Generate_BillTypes;
60  m_generators["config.BulkData.allianceshortnames"] = &ObjCacheDB::Generate_AllianceShortnames;
61  m_generators["config.BulkData.categories"] = &ObjCacheDB::Generate_invCategories;
62  m_generators["config.BulkData.invtypereactions"] = &ObjCacheDB::Generate_invTypeReactions;
63 
64  m_generators["config.BulkData.dgmtypeattribs"] = &ObjCacheDB::Generate_dgmTypeAttribs;
65  m_generators["config.BulkData.dgmtypeeffects"] = &ObjCacheDB::Generate_dgmTypeEffects;
66  m_generators["config.BulkData.dgmeffects"] = &ObjCacheDB::Generate_dgmEffects;
67  m_generators["config.BulkData.dgmattribs"] = &ObjCacheDB::Generate_dgmAttribs;
68  m_generators["config.BulkData.dgmexpressions"] = &ObjCacheDB::Generate_dgmExpressions;
69  m_generators["config.BulkData.metagroups"] = &ObjCacheDB::Generate_invMetaGroups;
70  m_generators["config.BulkData.ramactivities"] = &ObjCacheDB::Generate_ramActivities;
71  m_generators["config.BulkData.ramaltypesdetailpergroup"] = &ObjCacheDB::Generate_ramALTypeGroup;
72  m_generators["config.BulkData.ramaltypesdetailpercategory"] = &ObjCacheDB::Generate_ramALTypeCategory;
73  m_generators["config.BulkData.ramaltypes"] = &ObjCacheDB::Generate_ramALTypes;
74  m_generators["config.BulkData.ramcompletedstatuses"] = &ObjCacheDB::Generate_ramCompletedStatuses;
75  m_generators["config.BulkData.ramtyperequirements"] = &ObjCacheDB::Generate_ramTypeRequirements;
76 
77  m_generators["config.BulkData.mapcelestialdescriptions"] = &ObjCacheDB::Generate_mapCelestialDescriptions;
78  m_generators["config.BulkData.tickernames"] = &ObjCacheDB::Generate_tickerNames;
79  m_generators["config.BulkData.groups"] = &ObjCacheDB::Generate_invGroups;
80  m_generators["config.BulkData.certificates"] = &ObjCacheDB::Generate_certificates;
81  m_generators["config.BulkData.certificaterelationships"] = &ObjCacheDB::Generate_certificateRelationships;
82  m_generators["config.BulkData.shiptypes"] = &ObjCacheDB::Generate_invShipTypes;
83  m_generators["config.BulkData.locations"] = &ObjCacheDB::Generate_cacheLocations;
84  m_generators["config.BulkData.locationwormholeclasses"] = &ObjCacheDB::Generate_locationWormholeClasses;
85  m_generators["config.BulkData.bptypes"] = &ObjCacheDB::Generate_invBlueprintTypes;
86  m_generators["config.BulkData.graphics"] = &ObjCacheDB::Generate_eveGraphics;
87  m_generators["config.BulkData.types"] = &ObjCacheDB::Generate_invTypes;
88  m_generators["config.BulkData.invmetatypes"] = &ObjCacheDB::Generate_invMetaTypes;
89  m_generators["config.Bloodlines"] = &ObjCacheDB::Generate_chrBloodlines;
91  m_generators["config.BulkData.units"] = &ObjCacheDB::Generate_eveBulkDataUnits;
92  m_generators["config.BulkData.owners"] = &ObjCacheDB::Generate_cacheOwners;
93  m_generators["config.StaticOwners"] = &ObjCacheDB::Generate_eveStaticOwners;
95  m_generators["config.Attributes"] = &ObjCacheDB::Generate_chrAttributes;
97  m_generators["config.StaticLocations"] = &ObjCacheDB::Generate_eveStaticLocations;
98  m_generators["config.InvContrabandTypes"] = &ObjCacheDB::Generate_invContrabandTypes;
99 
100  m_generators["charCreationInfo.bloodlines"] = &ObjCacheDB::Generate_c_chrBloodlines;
101  m_generators["charCreationInfo.races"] = &ObjCacheDB::Generate_c_chrRaces;
102  m_generators["charCreationInfo.ancestries"] = &ObjCacheDB::Generate_c_chrAncestries;
103  m_generators["charCreationInfo.schools"] = &ObjCacheDB::Generate_c_chrSchools;
104  m_generators["charCreationInfo.attributes"] = &ObjCacheDB::Generate_c_chrAttributes;
105  m_generators["charCreationInfo.bl_accessories"] = &ObjCacheDB::Generate_bl_accessories;
106  m_generators["charCreationInfo.bl_lights"] = &ObjCacheDB::Generate_bl_lights;
107  m_generators["charCreationInfo.bl_skins"] = &ObjCacheDB::Generate_bl_skins;
108  m_generators["charCreationInfo.bl_beards"] = &ObjCacheDB::Generate_bl_beards;
109  m_generators["charCreationInfo.bl_eyes"] = &ObjCacheDB::Generate_bl_eyes;
110  m_generators["charCreationInfo.bl_lipsticks"] = &ObjCacheDB::Generate_bl_lipsticks;
111  m_generators["charCreationInfo.bl_makeups"] = &ObjCacheDB::Generate_bl_makeups;
112  m_generators["charCreationInfo.bl_hairs"] = &ObjCacheDB::Generate_bl_hairs;
113  m_generators["charCreationInfo.bl_backgrounds"] = &ObjCacheDB::Generate_bl_backgrounds;
114  m_generators["charCreationInfo.bl_decos"] = &ObjCacheDB::Generate_bl_decos;
115  m_generators["charCreationInfo.bl_eyebrows"] = &ObjCacheDB::Generate_bl_eyebrows;
116  m_generators["charCreationInfo.bl_costumes"] = &ObjCacheDB::Generate_bl_costumes;
117 
118  m_generators["charCreationInfo.eyebrows"] = &ObjCacheDB::Generate_a_eyebrows;
119  m_generators["charCreationInfo.eyes"] = &ObjCacheDB::Generate_a_eyes;
120  m_generators["charCreationInfo.decos"] = &ObjCacheDB::Generate_a_decos;
121  m_generators["charCreationInfo.hairs"] = &ObjCacheDB::Generate_a_hairs;
122  m_generators["charCreationInfo.backgrounds"] = &ObjCacheDB::Generate_a_backgrounds;
123  m_generators["charCreationInfo.accessories"] = &ObjCacheDB::Generate_a_accessories;
124  m_generators["charCreationInfo.lights"] = &ObjCacheDB::Generate_a_lights;
125  m_generators["charCreationInfo.costumes"] = &ObjCacheDB::Generate_a_costumes;
126  m_generators["charCreationInfo.makeups"] = &ObjCacheDB::Generate_a_makeups;
127  m_generators["charCreationInfo.beards"] = &ObjCacheDB::Generate_a_beards;
128  m_generators["charCreationInfo.skins"] = &ObjCacheDB::Generate_a_skins;
129  m_generators["charCreationInfo.lipsticks"] = &ObjCacheDB::Generate_a_lipsticks;
130 }
131 
132 PyRep *ObjCacheDB::GetCachableObject(const std::string &type)
133 {
134  std::map<std::string, genFunc>::const_iterator res;
135  res = m_generators.find(type);
136 
137  if (res == m_generators.end()) {
138  _log(SERVICE__ERROR, "Unable to find cachable object generator for type '%s'", type.c_str());
139  return nullptr;
140  }
141 
142  genFunc f = res->second;
143  return (this->*f)();
144 }
145 
146 //implement all the generators:
148 {
149  DBQueryResult res;
150  const char *q = "SELECT careerID, specialityID, specialityName, description, shortDescription, graphicID, iconID, dataID FROM specialities";
151  if (sDatabase.RunQuery(res, q) == false) {
152  _log(DATABASE__ERROR, "Error in query for cached object 'charNewExtraCreationInfo.specialities': %s", res.error.c_str());
153  return nullptr;
154  }
155  return DBResultToCRowset(res);
156 }
157 
159 {
160  DBQueryResult res;
161  const char *q = "SELECT raceID, careerID, careerName, description, shortDescription, graphicID, schoolID, iconID, dataID FROM careers";
162  if (sDatabase.RunQuery(res, q) == false)
163  {
164  _log(DATABASE__ERROR, "Error in query for cached object 'charNewExtraCreationInfo.careers': %s", res.error.c_str());
165  return nullptr;
166  }
167  return DBResultToCRowset(res);
168 }
169 
171 {
172  DBQueryResult res;
173  const char *q = "SELECT specialityID, skillTypeID, level FROM specialitySkills";
174  if (sDatabase.RunQuery(res, q) == false)
175  {
176  _log(DATABASE__ERROR, "Error in query for cached object 'charNewExtraCreationInfo.specialityskills': %s", res.error.c_str());
177  return nullptr;
178  }
179  return DBResultToCRowset(res);
180 }
181 
183 {
184  DBQueryResult res;
185  const char *q = "SELECT careerID, skillTypeID, level FROM sklCareerSkills";
186  if (sDatabase.RunQuery(res, q) == false)
187  {
188  _log(DATABASE__ERROR, "Error in query for cached object 'charNewExtraCreationInfo.careerskills': %s", res.error.c_str());
189  return nullptr;
190  }
191  return DBResultToCRowset(res);
192 }
193 
195 {
196  DBQueryResult res;
197  const char *q = "SELECT raceID, skillTypeID, level FROM sklRaceSkills";
198  if (sDatabase.RunQuery(res, q) == false)
199  {
200  _log(DATABASE__ERROR, "Error in query for cached object 'charNewExtraCreationInfo.raceSkills': %s", res.error.c_str());
201  return nullptr;
202  }
203  return DBResultToCRowset(res);
204 }
205 
207 {
208  DBQueryResult res;
209  const char *q = "SELECT iconID, iconFile, description, obsolete, iconType FROM icons";
210  if (sDatabase.RunQuery(res, q) == false)
211  {
212  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.icons': %s", res.error.c_str());
213  return nullptr;
214  }
215  return DBResultToCRowset(res);
216 }
217 
219 {
220  DBQueryResult res;
221  const char *q = "SELECT ownerID, iconID FROM ownerIcons";
222  if (sDatabase.RunQuery(res, q) == false)
223  {
224  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ownerIcons': %s", res.error.c_str());
225  return nullptr;
226  }
227  return DBResultToCRowset(res);
228 }
229 
231 {
232  DBQueryResult res;
233  const char *q = "SELECT typeID, materialTypeID, quantity FROM invTypeMaterials";
234  if (sDatabase.RunQuery(res, q) == false)
235  {
236  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.invTypeMaterials': %s", res.error.c_str());
237  return nullptr;
238  }
239  return DBResultToCRowset(res);
240 }
241 
243 {
244  DBQueryResult res;
245  const char *q = "SELECT soundID, soundFile, description, obsolete FROM sounds";
246  if (sDatabase.RunQuery(res, q) == false)
247  {
248  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.sounds': %s", res.error.c_str());
249  return nullptr;
250  }
251  return DBResultToCRowset(res);
252 }
253 
255 {
256  DBQueryResult res;
257  const char *q = "SELECT schematicID, typeID, quantity, isInput FROM schematicsTypeMap";
258  if (sDatabase.RunQuery(res, q) == false)
259  {
260  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.schematicsTypeMap': %s", res.error.c_str());
261  return nullptr;
262  }
263  return DBResultToCRowset(res);
264 }
265 
267 {
268  DBQueryResult res;
269  const char *q = "SELECT schematicID, schematicName, cycleTime, dataID FROM schematics";
270  if (sDatabase.RunQuery(res, q) == false)
271  {
272  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.schematics': %s", res.error.c_str());
273  return nullptr;
274  }
275  return DBResultToCRowset(res);
276 }
277 
279 {
280  DBQueryResult res;
281  const char *q = "SELECT overviewID, groupID FROM chrDefaultOverviewGroups";
282  if (sDatabase.RunQuery(res, q) == false)
283  {
284  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.overviewDefaultGroups': %s", res.error.c_str());
285  return nullptr;
286  }
287  return DBResultToCRowset(res);
288 }
289 
291 {
292  DBQueryResult res;
293  const char *q = "SELECT schematicID, pinTypeID FROM schematicsPinMap";
294  if (sDatabase.RunQuery(res, q) == false)
295  {
296  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.schematicsPinMap': %s", res.error.c_str());
297  return nullptr;
298  }
299  return DBResultToCRowset(res);
300 }
301 
303 {
304  DBQueryResult res;
305  const char *q = "SELECT dataID, overviewID, overviewName, overviewShortName FROM chrDefaultOverviews";
306  if (sDatabase.RunQuery(res, q) == false)
307  {
308  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.overviewDefaults': %s", res.error.c_str());
309  return nullptr;
310  }
311  return DBResultToCRowset(res);
312 }
313 
315 {
316  DBQueryResult res;
317  const char *q = "SELECT locationID, sceneID FROM locationScenes";
318  if (sDatabase.RunQuery(res, q) == false)
319  {
320  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.locationScenes': %s", res.error.c_str());
321  return nullptr;
322  }
323  return DBResultToCRowset(res);
324 }
325 
327 {
328  DBQueryResult res;
329  const char *q = "SELECT nameID, bloodlineID, lastName FROM chrBloodlineNames";
330  if (sDatabase.RunQuery(res, q) == false)
331  {
332  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.bloodlineNames': %s", res.error.c_str());
333  return nullptr;
334  }
335  return DBResultToCRowset(res);
336 }
337 
339 {
340  DBQueryResult res;
341  const char *q = "SELECT colorID, colorKey, hasSecondary, hasWeight, hasGloss FROM paperdollColors";
342  if (sDatabase.RunQuery(res, q) == false)
343  {
344  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollColors': %s", res.error.c_str());
345  return nullptr;
346  }
347  return DBResultToCRowset(res);
348 }
349 
351 {
352  DBQueryResult res;
353  const char *q = "SELECT colorNameID, gender, restrictions FROM paperdollColorRestrictions";
354  if (sDatabase.RunQuery(res, q) == false)
355  {
356  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollColorRestrictions': %s", res.error.c_str());
357  return nullptr;
358  }
359  return DBResultToCRowset(res);
360 }
361 
363 {
364  DBQueryResult res;
365  const char *q = "SELECT colorNameID, colorName FROM paperdollColorNames";
366  if (sDatabase.RunQuery(res, q) == false)
367  {
368  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollColorNames': %s", res.error.c_str());
369  return nullptr;
370  }
371  return DBResultToCRowset(res);
372 }
373 
375 {
376  DBQueryResult res;
377  const char *q = "SELECT sculptLocationID, weightKeyCategory, weightKeyPrefix FROM paperdollSculptingLocations";
378  if (sDatabase.RunQuery(res, q) == false)
379  {
380  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollSculptingLocations': %s", res.error.c_str());
381  return nullptr;
382  }
383  return DBResultToCRowset(res);
384 }
385 
387 {
388  DBQueryResult res;
389  const char *q = "SELECT modifierLocationID, modifierKey, variationKey FROM paperdollModifierLocations";
390  if (sDatabase.RunQuery(res, q) == false)
391  {
392  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollModifierLocations': %s", res.error.c_str());
393  return nullptr;
394  }
395  return DBResultToCRowset(res);
396 }
397 
399 {
400  DBQueryResult res;
401  const char *q = "SELECT paperdollResourceID, resGender, resPath, restrictions FROM paperdollResources";
402  if (sDatabase.RunQuery(res, q) == false)
403  {
404  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.paperdollResources': %s", res.error.c_str());
405  return nullptr;
406  }
407  return DBResultToCRowset(res);
408 }
409 
411 {
412  DBQueryResult res;
413  const char *q = "SELECT billTypeID,billTypeName,description FROM billTypes";
414  if(!sDatabase.RunQuery(res, q))
415  {
416  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.billtypes': %s",res.error.c_str());
417  return nullptr;
418  }
419  return DBResultToCRowset(res);
420 }
421 
423 { //TODO: fix this when alliances are implemented (DB table will be 'alnAlliance')
424  DBQueryResult res;
425  const char *q = "SELECT allianceID, shortName FROM alnAlliance";
426  if(!sDatabase.RunQuery(res, q))
427  {
428  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.alliance_ShortNames': %s",res.error.c_str());
429  return nullptr;
430  }
431  return DBResultToCRowset(res);
432 }
433 
435 {
436  DBQueryResult res;
437  const char *q = "SELECT categoryID, categoryName, description, published, iconID, categoryNameID, dataID FROM invCategories";
438  if(!sDatabase.RunQuery(res, q))
439  {
440  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.categories': %s",res.error.c_str());
441  return nullptr;
442  }
443  return DBResultToCRowset(res);
444 }
445 
447 {
448  DBQueryResult res;
449  const char *q = "SELECT reactionTypeID,input,typeID,quantity FROM invTypeReactions";
450  if(!sDatabase.RunQuery(res, q))
451  {
452  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.invtypereactions': %s",res.error.c_str());
453  return nullptr;
454  }
455  return DBResultToCRowset(res);
456 }
457 
459 {
460  DBQueryResult res;
461  const char *q = "SELECT typeID, attributeID, IF(valueInt IS NULL, valueFloat, valueInt) AS value FROM dgmTypeAttributes";
462  if(!sDatabase.RunQuery(res, q))
463  {
464  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.dgmtypeattribs': %s",res.error.c_str());
465  return nullptr;
466  }
467  return DBResultToCRowset(res);
468 }
469 
471 {
472  DBQueryResult res;
473  const char *q = "SELECT typeID,effectID,isDefault FROM dgmTypeEffects";
474  if(!sDatabase.RunQuery(res, q))
475  {
476  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.dgmtypeeffects': %s",res.error.c_str());
477  return nullptr;
478  }
479  return DBResultToCRowset(res);
480 }
481 
483 {
484  DBQueryResult res;
485  if(!sDatabase.RunQuery(res,
486  "SELECT effectID, effectName, displayNameID, descriptionID, dataID, effectCategory, preExpression, postExpression, description, guid, "
487  "isOffensive, isAssistance, durationAttributeID, trackingSpeedAttributeID, dischargeAttributeID, rangeAttributeID, falloffAttributeID, "
488  "disallowAutoRepeat, published, displayName, isWarpSafe, rangeChance, electronicChance, propulsionChance, distribution, sfxName, "
489  "npcUsageChanceAttributeID, npcActivationChanceAttributeID, fittingUsageChanceAttributeID, iconID, modifierInfo FROM dgmEffects"))
490  {
491  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.dgmeffects': %s",res.error.c_str());
492  return nullptr;
493  }
494  return DBResultToCRowset(res);
495 }
496 
498 {
499  DBQueryResult res;
500  if(!sDatabase.RunQuery(res,
501  "SELECT attributeID, attributeName, attributeCategory, description, maxAttributeID, attributeIdx, "
502  "chargeRechargeTimeID, defaultValue, published, unitID, displayName, displayNameID, stackable, highIsGood, iconID, dataID FROM dgmAttributeTypes"))
503  {
504  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.dgmattribs': %s",res.error.c_str());
505  return nullptr;
506  }
507  return DBResultToCRowset(res);
508 }
509 
511 {
512  DBQueryResult res;
513  if(!sDatabase.RunQuery(res,
514  "SELECT expressionID, operandID, arg1, arg2, expressionValue, description, expressionName, expressionTypeID, expressionGroupID, expressionAttributeID"
515  " FROM dgmExpressions"))
516  {
517  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.dgmexpressions': %s",res.error.c_str());
518  return nullptr;
519  }
520  return DBResultToCRowset(res);
521 }
522 
524 {
525  DBQueryResult res;
526  const char *q = "SELECT metaGroupID, metaGroupName, description, iconID, 0 as graphicID, 0 AS dataID FROM invMetaGroups";
527  if(!sDatabase.RunQuery(res, q))
528  {
529  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.metagroups': %s",res.error.c_str());
530  return nullptr;
531  }
532  return DBResultToCRowset(res);
533 }
534 
536 {
537  DBQueryResult res;
538  const char *q = "SELECT activityID, activityName, iconNo, description, published FROM ramActivities";
539  if(!sDatabase.RunQuery(res, q))
540  {
541  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramactivities': %s",res.error.c_str());
542  return nullptr;
543  }
544  return DBResultToCRowset(res);
545 }
546 
548 {
549  DBQueryResult res;
550  const char *q = "SELECT a.assemblyLineTypeID, b.activityID, a.groupID, a.timeMultiplier, a.materialMultiplier"
551  " FROM ramAssemblyLineTypeDetailPerGroup AS a"
552  " LEFT JOIN ramAssemblyLineTypes AS b USING (assemblyLineTypeID)";
553  if(!sDatabase.RunQuery(res, q))
554  {
555  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramaltypesdetailpergroup': %s",res.error.c_str());
556  return nullptr;
557  }
558  return DBResultToCRowset(res);
559 }
560 
562 {
563  DBQueryResult res;
564  const char *q = "SELECT a.assemblyLineTypeID, b.activityID, a.categoryID, a.timeMultiplier, a.materialMultiplier"
565  " FROM ramAssemblyLineTypeDetailPerCategory AS a"
566  " LEFT JOIN ramAssemblyLineTypes AS b USING (assemblyLineTypeID)";
567  if(!sDatabase.RunQuery(res, q))
568  {
569  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramaltypesdetailpercategory': %s",res.error.c_str());
570  return nullptr;
571  }
572  return DBResultToCRowset(res);
573 }
574 
576 {
577  DBQueryResult res;
578  const char *q = "SELECT assemblyLineTypeID, assemblyLineTypeName, assemblyLineTypeName AS typeName, description, activityID, baseTimeMultiplier, baseMaterialMultiplier, volume FROM ramAssemblyLineTypes";
579  if(!sDatabase.RunQuery(res, q))
580  {
581  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramaltypes': %s",res.error.c_str());
582  return nullptr;
583  }
584  return DBResultToCRowset(res);
585 }
586 
588 {
589  DBQueryResult res;
590  const char *q = "SELECT completedStatusID, completedStatusName FROM ramCompletedStatuses";
591  if(!sDatabase.RunQuery(res, q))
592  {
593  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramcompletedstatuses': %s",res.error.c_str());
594  return nullptr;
595  }
596  return DBResultToCRowset(res);
597 }
598 
600 {
601  DBQueryResult res;
602  const char *q = "SELECT typeID, activityID, requiredTypeID, quantity, damagePerJob, extra FROM ramTypeRequirements";
603  if(!sDatabase.RunQuery(res, q))
604  {
605  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.ramtyperequirements': %s", res.error.c_str());
606  return nullptr;
607  }
608  return DBResultToCRowset(res);
609 }
610 
612 {
613  DBQueryResult res;
614  const char *q = "SELECT celestialID, description FROM mapCelestialDescriptions";
615  if(!sDatabase.RunQuery(res, q))
616  {
617  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.mapcelestialdescriptions': %s", res.error.c_str());
618  return nullptr;
619  }
620  return DBResultToCRowset(res);
621 }
622 
624 {
625  DBQueryResult res;
626  const char *q = "SELECT corporationID,tickerName,shape1,shape2,shape3,color1,color2,color3 FROM crpCorporation";
627  if(!sDatabase.RunQuery(res, q))
628  {
629  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.tickernames': %s", res.error.c_str());
630  return nullptr;
631  }
632  return DBResultToCRowset(res);
633 }
634 
636 {
637  DBQueryResult res;
638  const char *q = "SELECT groupID, categoryID, groupName, description, iconID, 0 as graphicID, useBasePrice, allowManufacture, allowRecycler, anchored, anchorable, fittableNonSingleton, 1 AS published, 0 AS dataID FROM invGroups";
639  if(!sDatabase.RunQuery(res, q))
640  {
641  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.groups': %s", res.error.c_str());
642  return nullptr;
643  }
644  return DBResultToCRowset(res);
645 }
646 
648 {
649  DBQueryResult res;
650  const char *q = "SELECT certificateID, categoryID, classID, grade, iconID, corpID, description, 0 AS dataID FROM crtCertificates";
651  if(!sDatabase.RunQuery(res, q))
652  {
653  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.certificates': %s", res.error.c_str());
654  return nullptr;
655  }
656  return DBResultToCRowset(res);
657 }
658 
660 {
661  DBQueryResult res;
662  const char *q = "SELECT relationshipID, parentID, parentTypeID, parentLevel, childID, childTypeID FROM crtRelationships";
663  if(!sDatabase.RunQuery(res, q))
664  {
665  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.certificaterelationships': %s", res.error.c_str());
666  return nullptr;
667  }
668  return DBResultToCRowset(res);
669 }
670 
672 {
673  DBQueryResult res;
674  const char *q = "SELECT shipTypeID, weaponTypeID, miningTypeID, skillTypeID FROM shipTypes";
675  if(!sDatabase.RunQuery(res, q))
676  {
677  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.shiptypes': %s", res.error.c_str());
678  return nullptr;
679  }
680  return DBResultToCRowset(res);
681 }
682 
684 {
685  DBQueryResult res;
686  const char *q = "SELECT locationID, locationName, locationNameID, x, y, z FROM cacheLocations";
687  /*
688  const char *q = "SELECT e.itemID AS locationID, e.itemName AS locationName, e.x, e.y, e.z, 0 AS locationNameID FROM entity AS e"
689  " LEFT JOIN invTypes USING (typeID)"
690  " LEFT JOIN invGroups AS g USING (groupID)"
691  " WHERE g.categoryID IN (0, 2, 3)"; //, 6, 22, 23)"; // #System, Celestial, Station, Ship, Deployable, Structure
692  */
693  if(!sDatabase.RunQuery(res, q))
694  {
695  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.locations': %s", res.error.c_str());
696  return nullptr;
697  }
698  return DBResultToCRowset(res);
699 }
700 
701 PyRep *ObjCacheDB::Generate_cacheOwners() // FIXME add gender checks -allan
702 {
703  DBQueryResult res;
704  //const char *q = "SELECT ownerID, ownerName, typeID, gender, ownerNameID FROM cacheOwners";
705  const char *q = "SELECT ownerID, ownerName, typeID FROM cacheOwners";
706  /*
707  const char *q = "SELECT e.itemID AS ownerID, e.itemName AS ownerName, e.typeID, 0 AS gender, 0 AS locationNameID"
708  " FROM entity AS e"
709  " LEFT JOIN invTypes USING (typeID)"
710  " WHERE invTypes.groupID IN ( 1, 2, 19, 32 )"; //char, corp, faction, alliance
711  */
712  if(!sDatabase.RunQuery(res, q))
713  {
714  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.owners': %s", res.error.c_str());
715  return nullptr;
716  }
717  return DBResultToCRowset(res);
718 }
719 
721 {
722  DBQueryResult res;
723  const char *q = "SELECT locationID, wormholeClassID FROM mapLocationWormholeClasses";
724  if(!sDatabase.RunQuery(res, q))
725  {
726  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.locationwormholeclasses': %s", res.error.c_str());
727  return nullptr;
728  }
729  return DBResultToCRowset(res);
730 }
731 
733 {
734  DBQueryResult res;
735  const char *q = "SELECT blueprintTypeID, parentBlueprintTypeID, productTypeID, productionTime, techLevel, researchProductivityTime, researchMaterialTime, researchCopyTime, researchTechTime, productivityModifier, materialModifier, wasteFactor, chanceOfRE, maxProductionLimit FROM invBlueprintTypes";
736  if(!sDatabase.RunQuery(res, q))
737  {
738  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.bptypes': %s", res.error.c_str());
739  return nullptr;
740  }
741  return DBResultToCRowset(res);
742 }
743 
745 {
746  DBQueryResult res;
747  const char *q = "SELECT graphicID, graphicFile, graphicName, description, obsolete, graphicType, collisionFile, paperdollFile, animationTemplate, collidable, explosionID, directoryID, graphicMinX, graphicMinY, graphicMinZ, graphicMaxX, graphicMaxY, graphicMaxZ from graphics";
748  if(!sDatabase.RunQuery(res, q))
749  {
750  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.graphics': %s", res.error.c_str());
751  return nullptr;
752  }
753  return DBResultToCRowset(res);
754 }
755 
757 {
758  DBQueryResult res;
759  const char *q = "SELECT typeID, groupID, typeName, description, graphicID, radius, mass, volume, capacity, portionSize, raceID, basePrice, published, marketGroupID, chanceOfDuplicating, soundID, iconID, dataID, typeNameID, descriptionID FROM invTypes";
760  if(!sDatabase.RunQuery(res, q))
761  {
762  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.types': %s", res.error.c_str());
763  return nullptr;
764  }
765  return DBResultToCRowset(res);
766 }
767 
769 {
770  DBQueryResult res;
771  const char *q = "SELECT typeID, parentTypeID, metaGroupID FROM invMetaTypes";
772  if(!sDatabase.RunQuery(res, q))
773  {
774  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.invmetatypes': %s", res.error.c_str());
775  return nullptr;
776  }
777  return DBResultToCRowset(res);
778 }
779 
781 {
782  DBQueryResult res;
783  const char *q = "SELECT bloodlineID, bloodlineName, raceID, description, maleDescription, femaleDescription, shipTypeID, corporationID, perception, willpower, charisma, memory, intelligence, shortDescription, shortMaleDescription, shortFemaleDescription, iconID, bloodlineNameID, descriptionID, dataID FROM chrBloodlines";
784  if(!sDatabase.RunQuery(res, q))
785  {
786  _log(DATABASE__ERROR, "Error in query for cached object 'config.Bloodlines': %s", res.error.c_str());
787  return nullptr;
788  }
789  return DBResultToPackedRowList(res);
790 }
791 
793 {
794  DBQueryResult res;
795  const char *q = "SELECT unitID, unitName, displayName FROM eveUnits";
796  if(!sDatabase.RunQuery(res, q))
797  {
798  _log(DATABASE__ERROR, "Error in query for cached object 'config.Units': %s", res.error.c_str());
799  return nullptr;
800  }
801  return DBResultToPackedRowList(res);
802 }
803 
805 {
806  DBQueryResult res;
807  const char *q = "SELECT unitID, unitName, displayName FROM eveUnits";
808  if(!sDatabase.RunQuery(res, q))
809  {
810  _log(DATABASE__ERROR, "Error in query for cached object 'config.BulkData.units': %s", res.error.c_str());
811  return nullptr;
812  }
813  return DBResultToCRowset(res);
814 }
815 
817 {
818  DBQueryResult res;
819  const char *q = "SELECT ownerID, ownerName, typeID FROM eveStaticOwners";
820  if(!sDatabase.RunQuery(res, q))
821  {
822  _log(DATABASE__ERROR, "Error in query for cached object 'config.StaticOwners': %s", res.error.c_str());
823  return nullptr;
824  }
825  return DBResultToCRowset(res);
826 }
827 
829 {
830  DBQueryResult res;
831  const char *q = "SELECT raceID, raceName, description, iconID as graphicID, shortDescription, iconID, 0 AS dataID FROM chrRaces";
832  if(!sDatabase.RunQuery(res, q))
833  {
834  _log(DATABASE__ERROR, "Error in query for cached object 'config.Races': %s", res.error.c_str());
835  return nullptr;
836  }
837  return DBResultToPackedRowList(res);
838 }
839 
841 {
842  DBQueryResult res;
843  const char *q = "SELECT attributeID, attributeName, description, iconID, shortDescription, notes, iconID as graphicID FROM chrAttributes";
844  if(!sDatabase.RunQuery(res, q))
845  {
846  _log(DATABASE__ERROR, "Error in query for cached object 'config.Attributes': %s", res.error.c_str());
847  return nullptr;
848  }
849  return DBResultToPackedRowList(res);
850 }
851 
853 {
854  DBQueryResult res;
855  const char *q = "SELECT flagID, flagName, flagName as flagLabel, flagName as flagGroup, flagName as description, orderID FROM invFlags";
856  if(!sDatabase.RunQuery(res, q))
857  {
858  _log(DATABASE__ERROR, "Error in query for cached object 'config.Flags': %s", res.error.c_str());
859  return nullptr;
860  }
861  return DBResultToPackedRowList(res);
862 }
863 
865 {
866  DBQueryResult res;
867  const char *q = "SELECT locationID, locationName, x, y, z FROM eveStaticLocations";
868  if(!sDatabase.RunQuery(res, q))
869  {
870  _log(DATABASE__ERROR, "Error in query for cached object 'config.StaticLocations': %s", res.error.c_str());
871  return nullptr;
872  }
873  return DBResultToCRowset(res);
874 }
875 
877 {
878  DBQueryResult res;
879  const char *q = "SELECT factionID, typeID, standingLoss, confiscateMinSec, fineByValue, attackMinSec FROM invContrabandTypes";
880  if(!sDatabase.RunQuery(res, q))
881  {
882  _log(DATABASE__ERROR, "Error in query for cached object 'config.InvContrabandTypes': %s", res.error.c_str());
883  return nullptr;
884  }
885  return DBResultToCRowset(res);
886 }
887 
889 {
890  DBQueryResult res;
891  const char *q = "SELECT bloodlineID, bloodlineName, raceID, description, maleDescription, femaleDescription, shipTypeID, corporationID, perception, willpower, charisma, memory, intelligence, shortDescription, shortMaleDescription, shortFemaleDescription, iconID, bloodlineNameID, descriptionID, dataID FROM chrBloodlines";
892  if(!sDatabase.RunQuery(res, q))
893  {
894  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bloodlines': %s", res.error.c_str());
895  return nullptr;
896  }
897  return DBResultToCRowset(res);
898 }
899 
901 {
902  DBQueryResult res;
903  const char *q = "SELECT raceID, raceName, description, iconID, iconID AS graphicID, shortDescription, 0 AS dataID FROM chrRaces";
904  if(!sDatabase.RunQuery(res, q))
905  {
906  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.races': %s", res.error.c_str());
907  return nullptr;
908  }
909  return DBResultToCRowset(res);
910 }
911 
913 {
914  DBQueryResult res;
915  const char *q = "SELECT ancestryID, ancestryName, bloodlineID, description, perception, willpower, charisma, memory, intelligence, iconID, iconID AS graphicID, shortDescription, ancestryNameID, descriptionID, dataID FROM chrAncestries";
916  if(!sDatabase.RunQuery(res, q))
917  {
918  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.ancestries': %s", res.error.c_str());
919  return nullptr;
920  }
921  return DBResultToCRowset(res);
922 }
923 
925 {
926  DBQueryResult res;
927  const char *q = "SELECT raceID, schoolID, schoolName, description, graphicID, chrSchools.corporationID, chrSchools.agentID, newAgentID, iconID, schoolNameID, descriptionID"
928  " FROM chrSchools LEFT JOIN agtAgents USING (corporationID) GROUP BY schoolID";
929  if(!sDatabase.RunQuery(res, q))
930  {
931  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.schools': %s", res.error.c_str());
932  return nullptr;
933  }
934  return DBResultToCRowset(res);
935 }
936 
938 {
939  DBQueryResult res;
940  const char *q = "SELECT attributeID, attributeName, description, iconID, iconID as graphicID, shortDescription, notes FROM chrAttributes";
941  if(!sDatabase.RunQuery(res, q))
942  {
943  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.attributes': %s", res.error.c_str());
944  return nullptr;
945  }
946  return DBResultToCRowset(res);
947 }
948 
950 {
951  DBQueryResult res;
952  const char *q = "SELECT bloodlineID, gender, accessoryID FROM chrBLAccessories";
953  if(!sDatabase.RunQuery(res, q))
954  {
955  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_accessories': %s", res.error.c_str());
956  return nullptr;
957  }
958  return DBResultToCRowset(res);
959 }
960 
962 {
963  DBQueryResult res;
964  const char *q = "SELECT lightID, lightName FROM chrBLLights";
965  if(!sDatabase.RunQuery(res, q))
966  {
967  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_lights': %s", res.error.c_str());
968  return nullptr;
969  }
970  return DBResultToCRowset(res);
971 }
972 
974 {
975  DBQueryResult res;
976  const char *q = "SELECT bloodlineID, gender, skinID FROM chrBLSkins";
977  if(!sDatabase.RunQuery(res, q))
978  {
979  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_skins': %s", res.error.c_str());
980  return nullptr;
981  }
982  return DBResultToCRowset(res);
983 }
984 
986 {
987  DBQueryResult res;
988  const char *q = "SELECT bloodlineID, gender, beardID FROM chrBLBeards";
989  if(!sDatabase.RunQuery(res, q))
990  {
991  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_beards': %s", res.error.c_str());
992  return nullptr;
993  }
994  return DBResultToCRowset(res);
995 }
996 
998 {
999  DBQueryResult res;
1000  const char *q = "SELECT bloodlineID, gender, eyesID FROM chrBLEyes";
1001  if(!sDatabase.RunQuery(res, q))
1002  {
1003  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_eyes': %s", res.error.c_str());
1004  return nullptr;
1005  }
1006  return DBResultToCRowset(res);
1007 }
1008 
1010 {
1011  DBQueryResult res;
1012  const char *q = "SELECT bloodlineID, gender, lipstickID FROM chrBLLipsticks";
1013  if(!sDatabase.RunQuery(res, q))
1014  {
1015  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_lipsticks': %s", res.error.c_str());
1016  return nullptr;
1017  }
1018  return DBResultToCRowset(res);
1019 }
1020 
1022 {
1023  DBQueryResult res;
1024  const char *q = "SELECT bloodlineID, gender, makeupID FROM chrBLMakeups";
1025  if(!sDatabase.RunQuery(res, q))
1026  {
1027  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_makeups': %s", res.error.c_str());
1028  return nullptr;
1029  }
1030  return DBResultToCRowset(res);
1031 }
1032 
1034 {
1035  DBQueryResult res;
1036  const char *q = "SELECT bloodlineID, gender, hairID FROM chrBLHairs";
1037  if(!sDatabase.RunQuery(res, q))
1038  {
1039  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_hairs': %s", res.error.c_str());
1040  return nullptr;
1041  }
1042  return DBResultToCRowset(res);
1043 }
1044 
1046 {
1047  DBQueryResult res;
1048  const char *q = "SELECT backgroundID, backgroundName FROM chrBLBackgrounds";
1049  if(!sDatabase.RunQuery(res, q))
1050  {
1051  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_backgrounds': %s", res.error.c_str());
1052  return nullptr;
1053  }
1054  return DBResultToCRowset(res);
1055 }
1056 
1058 {
1059  DBQueryResult res;
1060  const char *q = "SELECT bloodlineID, gender, decoID FROM chrBLDecos";
1061  if(!sDatabase.RunQuery(res, q))
1062  {
1063  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_decos': %s", res.error.c_str());
1064  return nullptr;
1065  }
1066  return DBResultToCRowset(res);
1067 }
1068 
1070 {
1071  DBQueryResult res;
1072  const char *q = "SELECT bloodlineID, gender, eyebrowsID FROM chrBLEyebrows";
1073  if(!sDatabase.RunQuery(res, q))
1074  {
1075  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_eyebrows': %s", res.error.c_str());
1076  return nullptr;
1077  }
1078  return DBResultToCRowset(res);
1079 }
1080 
1082 {
1083  DBQueryResult res;
1084  const char *q = "SELECT bloodlineID, gender, costumeID FROM chrBLCostumes";
1085  if(!sDatabase.RunQuery(res, q))
1086  {
1087  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.bl_costumes': %s", res.error.c_str());
1088  return nullptr;
1089  }
1090  return DBResultToCRowset(res);
1091 }
1092 
1094 {
1095  DBQueryResult res;
1096  const char *q = "SELECT eyebrowsID, eyebrowsName FROM chrEyebrows";
1097  if(!sDatabase.RunQuery(res, q))
1098  {
1099  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.eyebrows': %s", res.error.c_str());
1100  return nullptr;
1101  }
1102  return DBResultToCRowset(res);
1103 }
1104 
1106 {
1107  DBQueryResult res;
1108  const char *q = "SELECT eyesID, eyesName FROM chrEyes";
1109  if(!sDatabase.RunQuery(res, q))
1110  {
1111  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.eyes': %s", res.error.c_str());
1112  return nullptr;
1113  }
1114  return DBResultToCRowset(res);
1115 }
1116 
1118 {
1119  DBQueryResult res;
1120  const char *q = "SELECT decoID, decoName FROM chrDecos";
1121  if(!sDatabase.RunQuery(res, q))
1122  {
1123  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.decos': %s", res.error.c_str());
1124  return nullptr;
1125  }
1126  return DBResultToCRowset(res);
1127 }
1128 
1130 {
1131  DBQueryResult res;
1132  const char *q = "SELECT hairID, hairName FROM chrHairs";
1133  if(!sDatabase.RunQuery(res, q))
1134  {
1135  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.hairs': %s", res.error.c_str());
1136  return nullptr;
1137  }
1138  return DBResultToCRowset(res);
1139 }
1140 
1142 {
1143  DBQueryResult res;
1144  const char *q = "SELECT backgroundID, backgroundName FROM chrBackgrounds";
1145  if(!sDatabase.RunQuery(res, q))
1146  {
1147  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.backgrounds': %s", res.error.c_str());
1148  return nullptr;
1149  }
1150  return DBResultToCRowset(res);
1151 }
1152 
1154 {
1155  DBQueryResult res;
1156  const char *q = "SELECT accessoryID, accessoryName FROM chrAccessories";
1157  if(!sDatabase.RunQuery(res, q))
1158  {
1159  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.accessories': %s", res.error.c_str());
1160  return nullptr;
1161  }
1162  return DBResultToCRowset(res);
1163 }
1164 
1166 {
1167  DBQueryResult res;
1168  const char *q = "SELECT lightID, lightName FROM chrLights";
1169  if(!sDatabase.RunQuery(res, q))
1170  {
1171  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.lights': %s", res.error.c_str());
1172  return nullptr;
1173  }
1174  return DBResultToCRowset(res);
1175 }
1176 
1178 {
1179  DBQueryResult res;
1180  const char *q = "SELECT costumeID, costumeName FROM chrCostumes";
1181  if(!sDatabase.RunQuery(res, q))
1182  {
1183  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.costumes': %s", res.error.c_str());
1184  return nullptr;
1185  }
1186  return DBResultToCRowset(res);
1187 }
1188 
1190 {
1191  DBQueryResult res;
1192  const char *q = "SELECT makeupID, makeupName FROM chrMakeups";
1193  if(!sDatabase.RunQuery(res, q))
1194  {
1195  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.makeups': %s", res.error.c_str());
1196  return nullptr;
1197  }
1198  return DBResultToCRowset(res);
1199 }
1200 
1202 {
1203  DBQueryResult res;
1204  const char *q = "SELECT beardID, beardName FROM chrBeards";
1205  if(!sDatabase.RunQuery(res, q))
1206  {
1207  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.beards': %s", res.error.c_str());
1208  return nullptr;
1209  }
1210  return DBResultToCRowset(res);
1211 }
1212 
1214 {
1215  DBQueryResult res;
1216  const char *q = "SELECT skinID, skinName FROM chrSkins";
1217  if(!sDatabase.RunQuery(res, q))
1218  {
1219  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.skins': %s", res.error.c_str());
1220  return nullptr;
1221  }
1222  return DBResultToCRowset(res);
1223 }
1224 
1226 {
1227  DBQueryResult res;
1228  const char *q = "SELECT lipstickID, lipstickName FROM chrLipsticks";
1229  if(!sDatabase.RunQuery(res, q))
1230  {
1231  _log(DATABASE__ERROR, "Error in query for cached object 'charCreationInfo.lipsticks': %s", res.error.c_str());
1232  return nullptr;
1233  }
1234  return DBResultToCRowset(res);
1235 }
PyRep * Generate_ramALTypeGroup()
Definition: ObjCacheDB.cpp:547
Base Python wire object.
Definition: PyRep.h:66
PyRep * Generate_certificates()
Definition: ObjCacheDB.cpp:647
PyRep * Generate_cacheLocations()
Definition: ObjCacheDB.cpp:683
PyRep * Generate_invGroups()
Definition: ObjCacheDB.cpp:635
PyRep * Generate_bl_eyebrows()
PyRep * Generate_a_costumes()
PyRep * Generate_CharNewExtraCareerSkills()
Definition: ObjCacheDB.cpp:182
PyRep * Generate_eveGraphics()
Definition: ObjCacheDB.cpp:744
#define sDatabase
Definition: dbcore.h:199
PyRep * Generate_Schematicspinmap()
Definition: ObjCacheDB.cpp:290
#define _log(type, fmt,...)
Definition: logsys.h:124
PyRep * Generate_a_beards()
PyObjectEx * DBResultToCRowset(DBQueryResult &result)
Definition: EVEDBUtils.cpp:402
PyRep * Generate_a_hairs()
PyRep * Generate_bl_lipsticks()
PyRep * Generate_PaperdollColorNames()
Definition: ObjCacheDB.cpp:362
PyRep * Generate_a_skins()
PyRep * Generate_invShipTypes()
Definition: ObjCacheDB.cpp:671
PyRep * Generate_invMetaGroups()
Definition: ObjCacheDB.cpp:523
PyRep * Generate_invBlueprintTypes()
Definition: ObjCacheDB.cpp:732
PyRep * Generate_c_chrAttributes()
Definition: ObjCacheDB.cpp:937
PyRep * Generate_bl_costumes()
PyRep * Generate_PaperdollSculptingLocations()
Definition: ObjCacheDB.cpp:374
PyRep * Generate_tickerNames()
Definition: ObjCacheDB.cpp:623
PyRep * Generate_bl_makeups()
PyRep * Generate_OverviewDefaultGroups()
Definition: ObjCacheDB.cpp:278
PyRep * Generate_Ownericons()
Definition: ObjCacheDB.cpp:218
PyRep * Generate_invTypeReactions()
Definition: ObjCacheDB.cpp:446
PyRep * Generate_OverviewDefaults()
Definition: ObjCacheDB.cpp:302
PyRep * Generate_a_eyes()
PyRep * Generate_Locationscenes()
Definition: ObjCacheDB.cpp:314
PyRep * Generate_bl_skins()
Definition: ObjCacheDB.cpp:973
PyRep * Generate_a_lights()
PyRep * Generate_PaperdollColors()
Definition: ObjCacheDB.cpp:338
PyRep * Generate_bl_accessories()
Definition: ObjCacheDB.cpp:949
PyRep * Generate_a_eyebrows()
PyRep * Generate_a_decos()
PyRep * Generate_ramActivities()
Definition: ObjCacheDB.cpp:535
PyRep * Generate_invCategories()
Definition: ObjCacheDB.cpp:434
PyRep * Generate_Invtypematerials()
Definition: ObjCacheDB.cpp:230
PyRep * Generate_c_chrRaces()
Definition: ObjCacheDB.cpp:900
PyRep * Generate_CharNewExtraRaceSkills()
Definition: ObjCacheDB.cpp:194
PyRep * Generate_AllianceShortnames()
Definition: ObjCacheDB.cpp:422
PyRep * Generate_dgmAttribs()
Definition: ObjCacheDB.cpp:497
PyRep * Generate_dgmTypeAttribs()
Definition: ObjCacheDB.cpp:458
PyRep * Generate_a_backgrounds()
const char * c_str() const
Definition: dbcore.h:48
PyRep * Generate_PaperdollColorRestrictions()
Definition: ObjCacheDB.cpp:350
PyRep * Generate_certificateRelationships()
Definition: ObjCacheDB.cpp:659
PyRep *(ObjCacheDB::* genFunc)()
Definition: ObjCacheDB.h:43
PyRep * Generate_a_makeups()
PyRep * Generate_dgmExpressions()
Definition: ObjCacheDB.cpp:510
PyRep * Generate_locationWormholeClasses()
Definition: ObjCacheDB.cpp:720
PyRep * Generate_PaperdollModifierLocations()
Definition: ObjCacheDB.cpp:386
PyRep * Generate_a_accessories()
PyList * DBResultToPackedRowList(DBQueryResult &result)
Definition: EVEDBUtils.cpp:306
PyRep * Generate_eveStaticLocations()
Definition: ObjCacheDB.cpp:864
PyRep * Generate_eveUnits()
Definition: ObjCacheDB.cpp:792
PyRep * Generate_CharNewExtraCareers()
Definition: ObjCacheDB.cpp:158
PyRep * Generate_chrBloodlines()
Definition: ObjCacheDB.cpp:780
PyRep * Generate_ramCompletedStatuses()
Definition: ObjCacheDB.cpp:587
PyRep * Generate_c_chrSchools()
Definition: ObjCacheDB.cpp:924
PyRep * Generate_invTypes()
Definition: ObjCacheDB.cpp:756
PyRep * Generate_ramTypeRequirements()
Definition: ObjCacheDB.cpp:599
PyRep * Generate_CharNewExtraSpecialities()
Definition: ObjCacheDB.cpp:147
PyRep * Generate_CharNewExtraSpecialitySkills()
Definition: ObjCacheDB.cpp:170
DBerror error
Definition: dbcore.h:69
PyRep * Generate_chrRaces()
Definition: ObjCacheDB.cpp:828
PyRep * Generate_dgmEffects()
Definition: ObjCacheDB.cpp:482
PyRep * Generate_BillTypes()
Definition: ObjCacheDB.cpp:410
PyRep * Generate_Icons()
Definition: ObjCacheDB.cpp:206
PyRep * Generate_eveStaticOwners()
Definition: ObjCacheDB.cpp:816
PyRep * Generate_bl_lights()
Definition: ObjCacheDB.cpp:961
PyRep * Generate_mapCelestialDescriptions()
Definition: ObjCacheDB.cpp:611
PyRep * Generate_Schematics()
Definition: ObjCacheDB.cpp:266
PyRep * Generate_invFlags()
Definition: ObjCacheDB.cpp:852
std::map< std::string, genFunc > m_generators
Definition: ObjCacheDB.h:44
PyRep * Generate_bl_hairs()
PyRep * Generate_bl_beards()
Definition: ObjCacheDB.cpp:985
PyRep * Generate_dgmTypeEffects()
Definition: ObjCacheDB.cpp:470
PyRep * Generate_bl_backgrounds()
PyRep * Generate_chrAttributes()
Definition: ObjCacheDB.cpp:840
PyRep * Generate_eveBulkDataUnits()
Definition: ObjCacheDB.cpp:804
PyRep * Generate_bl_eyes()
Definition: ObjCacheDB.cpp:997
PyRep * Generate_Sounds()
Definition: ObjCacheDB.cpp:242
PyRep * Generate_cacheOwners()
Definition: ObjCacheDB.cpp:701
PyRep * Generate_ramALTypes()
Definition: ObjCacheDB.cpp:575
PyRep * Generate_BloodlineNames()
Definition: ObjCacheDB.cpp:326
PyRep * Generate_c_chrAncestries()
Definition: ObjCacheDB.cpp:912
PyRep * Generate_c_chrBloodlines()
Definition: ObjCacheDB.cpp:888
PyRep * Generate_invContrabandTypes()
Definition: ObjCacheDB.cpp:876
PyRep * Generate_bl_decos()
PyRep * Generate_invMetaTypes()
Definition: ObjCacheDB.cpp:768
PyRep * Generate_Schematicstypemap()
Definition: ObjCacheDB.cpp:254
PyRep * Generate_a_lipsticks()
PyRep * GetCachableObject(const std::string &type)
Definition: ObjCacheDB.cpp:132
PyRep * Generate_PaperdollResources()
Definition: ObjCacheDB.cpp:398
PyRep * Generate_ramALTypeCategory()
Definition: ObjCacheDB.cpp:561