36 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID IN (754, 966)"))
42 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID IN (282, 333, 423, 427, 530, 711, 712)"))
48 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID = 18 AND published = 1"))
54 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID IN (280, 283, 313, 334, 428, 429, 526, 536, 873, 886, 913, 964)"))
60 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID IN (1042, 1034, 1040, 1041)"))
66 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID = 314"))
72 if (!
sDatabase.RunQuery(res,
"SELECT typeID, typeName FROM invTypes WHERE groupID IN (1031, 1032, 1033, 1035)"))
78 if (!
sDatabase.RunQuery(res,
"SELECT typeID, materialTypeID, quantity FROM invTypeMaterials"))
79 codelog(DATABASE__ERROR,
"Error in GetRAMMaterials query: %s", res.
error.
c_str());
84 if (!
sDatabase.RunQuery(res,
"SELECT typeID, activityID, requiredTypeID, quantity, damagePerJob, extra FROM ramTypeRequirements"))
85 codelog(DATABASE__ERROR,
"Error in GetRAMRequirements query: %s", res.
error.
c_str());
91 sDatabase.RunQuery(err,
"UPDATE ramJobs SET eventID=%u WHERE jobID=%u", eventID, jobID);
96 if(!
sDatabase.RunQuery(err,
"DELETE FROM invBlueprints WHERE itemID=%u", blueprintID)) {
97 _log(DATABASE__ERROR,
"Failed to delete blueprint %u: %s.", blueprintID, err.
c_str());
107 "SELECT requiredTypeID AS typeID, quantity"
108 " FROM ramTypeRequirements"
109 " WHERE typeID = (SELECT blueprintTypeID FROM invBlueprintTypes WHERE productTypeID = %u)"
110 " AND activityID = 1 AND damagePerJob = 1",
113 _log(DATABASE__ERROR,
"Could not retrieve material composition for type %u : %s", typeID, res.
error.
c_str());
123 "INSERT INTO invBlueprints"
124 " (itemID, copy, mLevel, pLevel, runs)"
126 " (%u, %u, %i, %i, %i)"
127 "ON DUPLICATE KEY UPDATE "
128 "mLevel=VALUES(mLevel), "
129 "pLevel=VALUES(pLevel), "
130 "runs=VALUES(runs) ",
133 codelog(DATABASE__ERROR,
"Error in SaveBlueprint query: %s.", err.
c_str());
148 " FROM invBlueprints"
158 _log(DATABASE__MESSAGE,
"Blueprint %u not found.", blueprintID);
174 " parentBlueprintTypeID,"
178 " researchProductivityTime,"
179 " researchMaterialTime,"
182 " productivityModifier,"
185 " maxProductionLimit, "
188 " FROM invBlueprintTypes AS bt"
189 " LEFT JOIN invTypes AS t ON t.typeID = bt.blueprintTypeID"
190 " LEFT JOIN invGroups AS g USING (groupID)"))
193 codelog(DATABASE__ERROR,
"Error in GetBlueprintType query: %s.", res.
error.
c_str());
204 " job.assemblyLineID,"
205 " assemblyLine.containerID,"
206 " job.installedItemID,"
207 " installedItem.typeID AS installedItemTypeID,"
208 " installedItem.ownerID AS installedItemOwnerID,"
209 " blueprint.pLevel AS installedItemProductivityLevel,"
210 " blueprint.mLevel AS installedItemMaterialLevel,"
212 " IF(assemblyLine.activityID = 1, blueprintType.productTypeID, installedItem.typeID) AS outputTypeID,"
215 " assemblyLine.activityID,"
218 " job.beginProductionTime,"
219 " job.pauseProductionTime,"
220 " job.endProductionTime,"
221 " job.completedStatusID != 0 AS completed,"
222 " job.licensedProductionRuns,"
223 " station.solarSystemID AS installedInSolarSystemID,"
224 " job.completedStatusID AS completedStatus,"
225 " station.stationTypeID AS containerTypeID,"
226 " station.solarSystemID AS containerLocationID"
227 " FROM ramJobs AS job"
228 " LEFT JOIN entity AS installedItem ON job.installedItemID = installedItem.itemID"
229 " LEFT JOIN ramAssemblyLines AS assemblyLine ON job.assemblyLineID = assemblyLine.assemblyLineID"
230 " LEFT JOIN invBlueprints AS blueprint ON installedItem.itemID = blueprint.itemID"
231 " LEFT JOIN invBlueprintTypes AS blueprintType ON installedItem.typeID = blueprintType.blueprintTypeID"
232 " LEFT JOIN ramAssemblyLineStations AS station ON assemblyLine.containerID = station.stationID"
233 " WHERE job.ownerID = %u"
234 " AND job.completedStatusID %s 0"
235 " GROUP BY job.jobID",
236 ownerID, (completed ?
"!=" :
"=") ))
238 _log(DATABASE__ERROR,
"Failed to query jobs for owner %u: %s", ownerID, res.
error.
c_str());
250 " station.stationID AS containerID,"
251 " station.stationTypeID AS containerTypeID,"
252 " station.solarSystemID AS containerLocationID,"
253 " station.assemblyLineTypeID,"
257 " FROM ramAssemblyLineStations AS station"
258 " LEFT JOIN crpNPCCorporations AS corp ON station.ownerID = corp.corporationID"
259 " LEFT JOIN ramAssemblyLineTypes as types ON station.assemblyLineTypeID = types.assemblyLineTypeID"
260 " WHERE station.ownerID = corp.corporationID"
261 " AND station.regionID = %u",
264 _log(DATABASE__ERROR,
"Failed to query public assembly lines for region %u: %s.", regionID, res.
error.
c_str());
276 " station.stationID AS containerID,"
277 " station.stationTypeID AS containerTypeID,"
278 " station.solarSystemID AS containerLocationID,"
279 " station.assemblyLineTypeID,"
282 " FROM ramAssemblyLineStations AS station"
283 " LEFT JOIN ramAssemblyLines AS line ON station.stationID = line.containerID AND station.assemblyLineTypeID = line.assemblyLineTypeID AND station.ownerID = line.ownerID"
284 " WHERE station.ownerID = %u"
285 " AND (line.restrictionMask & %u) = %u",
288 _log(DATABASE__ERROR,
"Failed to query personal assembly lines for char %u: %s.", charID, res.
error.
c_str());
300 " station.stationID AS containerID,"
301 " station.stationTypeID AS containerTypeID,"
302 " station.solarSystemID AS containerLocationID,"
303 " station.assemblyLineTypeID,"
306 " FROM ramAssemblyLineStations AS station"
307 " LEFT JOIN ramAssemblyLines AS line ON station.stationID = line.containerID AND station.assemblyLineTypeID = line.assemblyLineTypeID AND station.ownerID = line.ownerID"
308 " WHERE station.ownerID = %u",
311 _log(DATABASE__ERROR,
"Failed to query private assembly lines for char %u: %s.", charID, res.
error.
c_str());
324 " station.stationID AS containerID,"
325 " station.stationTypeID AS containerTypeID,"
326 " station.solarSystemID AS containerLocationID,"
327 " station.assemblyLineTypeID,"
330 " FROM ramAssemblyLineStations AS station"
331 " LEFT JOIN ramAssemblyLines AS line ON station.stationID = line.containerID AND station.assemblyLineTypeID = line.assemblyLineTypeID AND station.ownerID = line.ownerID"
332 " WHERE station.ownerID = %u"
333 " AND (line.restrictionMask & %u) = %u",
336 _log(DATABASE__ERROR,
"Failed to query corporation assembly lines for corp %u: %s.", corpID, res.
error.
c_str());
349 " station.stationID AS containerID,"
350 " station.stationTypeID AS containerTypeID,"
351 " station.solarSystemID AS containerLocationID,"
352 " station.assemblyLineTypeID,"
355 " FROM ramAssemblyLineStations AS station"
356 " LEFT JOIN crpCorporation AS crp ON station.ownerID = crp.corporationID"
357 " LEFT JOIN ramAssemblyLines AS line ON station.stationID = line.containerID AND station.assemblyLineTypeID = line.assemblyLineTypeID AND station.ownerID = line.ownerID"
358 " WHERE crp.allianceID = %u"
359 " AND (line.restrictionMask & %u) = %u",
362 _log(DATABASE__ERROR,
"Failed to query alliance assembly lines for alliance %u: %s.", allianceID, res.
error.
c_str());
376 " assemblyLineTypeID,"
382 " discountPerGoodStandingPoint,"
383 " surchargePerBadStandingPoint,"
385 " minimumCharSecurity,"
386 " minimumCorpSecurity,"
387 " maximumCharSecurity,"
388 " maximumCorpSecurity"
389 " FROM ramAssemblyLines"
390 " WHERE containerID = %u",
392 _log(DATABASE__ERROR,
"Failed to query assembly lines for container %u: %s.", containerID, res.
error.
c_str());
404 " alt.baseMaterialMultiplier,"
405 " alt.baseTimeMultiplier,"
407 " alt.minCostPerHour,"
410 " al.discountPerGoodStandingPoint,"
411 " al.surchargePerBadStandingPoint"
412 " FROM ramAssemblyLines AS al"
413 " LEFT JOIN ramAssemblyLineTypes AS alt USING (assemblyLineTypeID)"
414 " WHERE al.assemblyLineID = %u",
417 _log(DATABASE__ERROR,
"Failed to query properties for assembly line %u: %s.", assemblyLineID, res.
error.
c_str());
423 _log(DATABASE__ERROR,
"No properties found for assembly line %u.", assemblyLineID);
427 into.materialMultiplier = row.
GetFloat(0);
428 into.timeMultiplier = row.
GetFloat(1);
440 float standing(1), costModifier(1);
448 if (cStanding > fStanding) {
449 standing = cStanding;
451 standing = fStanding;
463 costModifier += row.
GetFloat(7) * -standing;
465 costModifier -= row.
GetFloat(6) * standing;
469 if (costModifier == 0)
472 _log(MANUF__MESSAGE,
"FactoryDB::GetALProps() - Cost Modifier %.2f, standing %.2f", costModifier, standing);
475 into.installCost *= costModifier;
488 " minimumCharSecurity,"
489 " maximumCharSecurity,"
490 " minimumCorpSecurity,"
491 " maximumCorpSecurity,"
494 " FROM ramAssemblyLines"
495 " WHERE assemblyLineID = %i",
498 _log(DATABASE__ERROR,
"Failed to query verify properties for assembly line %u: %s.", assemblyLineID, res.
error.
c_str());
504 _log(DATABASE__ERROR,
"No verify properties found for assembly line %u.", assemblyLineID);
527 "INSERT INTO ramJobs"
528 " (ownerID, installerID, assemblyLineID, installedItemID, installTime, beginProductionTime, endProductionTime,"
529 " runs, outputFlag, licensedProductionRuns, completedStatusID, installedInSolarSystemID)"
531 " (%u, %u, %i, %i, %.0f, %li, %li,"
532 " %i, %i, %i, 0, %i)",
533 ownerID, installerID, args.AssemblyLineID, args.bpItemID,
GetFileTimeNow(), beginTime, endTime,
534 args.runs, args.outputFlag, args.copyRuns, systemID))
536 _log(DATABASE__ERROR,
"Failed to insert new job to database: %s.", err.
c_str());
542 "UPDATE ramAssemblyLines"
543 " SET nextFreeTime = %li"
544 " WHERE assemblyLineID = %i",
545 endTime, args.AssemblyLineID))
547 _log(DATABASE__ERROR,
"Failed to update next free time for assembly line %u: %s.", args.AssemblyLineID, err.
c_str());
560 " FROM ramJobs AS job"
561 " LEFT JOIN ramAssemblyLines AS line USING (assemblyLineID)"
562 " WHERE job.installerID = %u"
563 " AND job.completedStatusID = 0"
564 " AND line.activityID = 1",
567 _log(DATABASE__ERROR,
"Failed to count manufacturing jobs for installer %u.", installerID);
573 _log(DATABASE__ERROR,
"No rows returned while counting manufacturing jobs for installer %u.", installerID);
585 " FROM ramJobs AS job"
586 " LEFT JOIN ramAssemblyLines AS line USING (assemblyLineID)"
587 " WHERE job.installerID = %u"
588 " AND job.completedStatusID = 0"
589 " AND line.activityID != 1",
592 _log(DATABASE__ERROR,
"Failed to count research jobs for installer %u.", installerID);
606 "SELECT job.installedItemID, job.ownerID, job.outputFlag, job.runs, job.licensedProductionRuns,"
607 " job.endProductionTime, job.completedStatusID, line.activityID, job.eventID"
608 " FROM ramJobs AS job"
609 " LEFT JOIN ramAssemblyLines AS line USING (assemblyLineID)"
610 " WHERE job.jobID = %u",
613 _log(DATABASE__ERROR,
"Failed to query properties of job %u: %s.", jobID, res.
error.
c_str());
619 _log(DATABASE__ERROR,
"No properties found for job %u.", jobID);
639 if (!
sDatabase.RunQuery(err,
"UPDATE ramJobs SET completedStatusID = %i WHERE jobID = %u", completedStatus, jobID)) {
640 _log(DATABASE__ERROR,
"Failed to complete job %u (status = %i): %s.", jobID, completedStatus, err.
c_str());
650 if (!
sDatabase.RunQuery(res,
"SELECT blueprintTypeID FROM invBlueprintTypes WHERE parentBlueprintTypeID = %u", blueprintTypeID)) {
651 _log(DATABASE__ERROR,
"Unable to get T2 type for type ID %u: %s", blueprintTypeID, res.
error.
c_str());
664 if (!
sDatabase.RunQuery(res,
"SELECT nextFreeTime FROM ramAssemblyLines WHERE assemblyLineID = %u", assemblyLineID)) {
665 _log(DATABASE__ERROR,
"Failed to query next free time for assembly line %u: %s.", assemblyLineID, res.
error.
c_str());
671 _log(DATABASE__ERROR,
"Assembly line %u not found.", assemblyLineID);
682 "SELECT alc.materialMultiplier, alc.timeMultiplier"
683 " FROM ramAssemblyLineTypeDetailPerCategory AS alc"
684 " LEFT JOIN ramAssemblyLines AS al USING (assemblyLineTypeID)"
685 " WHERE al.assemblyLineID = %u AND alc.categoryID = %u",
688 _log(DATABASE__ERROR,
"Failed to check producability of cat %u by line %u: %s", pType->
categoryID(), assemblyLineID, res.
error.
c_str());
694 into.materialMultiplier *= row.
GetDouble(0);
700 "SELECT alg.materialMultiplier, alg.timeMultiplier"
701 " FROM ramAssemblyLineTypeDetailPerGroup AS alg"
702 " LEFT JOIN ramAssemblyLines AS al USING (assemblyLineTypeID)"
703 " WHERE al.assemblyLineID = %u"
704 " AND alg.groupID = %u",
705 assemblyLineID, pType->
groupID()))
707 _log(DATABASE__ERROR,
"Failed to check producability of group %u by line %u: %s", pType->
groupID(), assemblyLineID, res.
error.
c_str());
712 into.materialMultiplier *= row.
GetDouble(0);
723 " FROM ramTypeRequirements"
729 _log(DATABASE__ERROR,
"Failed to check ore type ID: %s.", res.
error.
c_str());
740 "SELECT NULL FROM ramTypeRequirements"
741 " LEFT JOIN invBlueprintTypes ON typeID = blueprintTypeID"
742 " WHERE damagePerJob = 1 AND activityID = 6 AND typeID = %u"
747 _log(DATABASE__ERROR,
"Failed to check item type ID: %s.", res.
error.
c_str());
756 "SELECT NULL FROM ramTypeRequirements"
757 " LEFT JOIN invBlueprintTypes ON typeID = blueprintTypeID"
758 " WHERE damagePerJob = 1 AND activityID = 1 AND productTypeID = %u"
763 _log(DATABASE__ERROR,
"Failed to check item type ID: %s.", res.
error.
c_str());
static float GetStanding(uint32 fromID, uint32 toID)
static PyRep * GetMaterialCompositionOfItemType(const uint32 typeID)
static PyRep * AssemblyLinesSelectCorporation(const uint32 corporationID)
static void GetMinerals(DBQueryResult &res)
static bool GetMultipliers(const uint32 assemblyLineID, const ItemType *pType, Rsp_InstallJob &into)
#define _log(type, fmt,...)
float GetFloat(uint32 index) const
PyObjectEx * DBResultToCRowset(DBQueryResult &result)
int32 GetInt(uint32 index) const
static uint32 CountManufacturingJobs(const uint32 installerID)
static bool IsProducableBy(const uint32 assemblyLineID, const ItemType *pType)
uint32 GetUInt(uint32 index) const
double GetDouble(uint32 index) const
static bool IsRecyclable(const uint16 typeID)
static void GetComponents(DBQueryResult &res)
static uint32 GetTech2Blueprint(const uint32 blueprintTypeID)
static PyRep * AssemblyLinesSelectPersonal(const uint32 charID)
static void GetRAMMaterials(DBQueryResult &res)
static uint32 InstallJob(const uint32 ownerID, const uint32 installerID, Call_InstallJob &args, const int64 beginTime, const int64 endTime, const uint32 systemID)
static PyRep * AssemblyLinesSelectPublic(const uint32 regionID)
static bool GetBlueprint(uint32 blueprintID, EvERam::bpData &into)
static bool IsRefinable(const uint16 typeID)
static bool GetJobProperties(const uint32 jobID, EvERam::JobProperties &data)
bool GetRow(DBResultRow &into)
static PyRep * GetJobs2(const int32 ownerID, const bool completed)
bool GetBool(uint32 index) const
static void GetBlueprintType(DBQueryResult &res)
static bool DeleteBlueprint(uint32 blueprintID)
static uint32 CountResearchJobs(const uint32 installerID)
const char * c_str() const
static int64 GetNextFreeTime(const uint32 assemblyLineID)
#define codelog(type, fmt,...)
PyObject * DBResultToRowset(DBQueryResult &result)
static void GetCommodities(DBQueryResult &res)
static bool SaveBlueprintData(uint32 blueprintID, EvERam::bpData &data)
bool IsNull(uint32 index) const
uint32 corporationID() const
static void GetRAMRequirements(DBQueryResult &res)
static void GetCompounds(DBQueryResult &res)
static PyRep * AssemblyLinesGet(const uint32 containerID)
static PyRep * AssemblyLinesSelectAlliance(const int32 allianceID)
static void GetResources(DBQueryResult &res)
static void SetJobEventID(const uint32 jobID, const uint32 eventID)
static bool GetAssemblyLineProperties(const uint32 assemblyLineID, Character *pChar, Rsp_InstallJob &into, bool isCorpJob=false)
static bool GetAssemblyLineRestrictions(const int32 assemblyLineID, EvERam::LineRestrictions &data)
static PyRep * AssemblyLinesSelectPrivate(const uint32 charID)
static void GetSalvage(DBQueryResult &res)
int64 GetInt64(uint32 index) const
static void GetMiscCommodities(DBQueryResult &res)
static bool CompleteJob(const uint32 jobID, const int8 completedStatus)