45 if (!
sDatabase.RunQuery(res,
"SELECT categoryID, categoryName, description, dataID, categoryNameID FROM crtCategories")) {
46 codelog(DATABASE__ERROR,
"Failed to query certificate categories: %s.", res.
error.
c_str());
55 if (!
sDatabase.RunQuery(res,
"SELECT shipTypeID, certificateID, recommendationLevel, recommendationID FROM crtRecommendations")) {
56 codelog(DATABASE__ERROR,
"Failed to query certificate categories: %s.", res.
error.
c_str());
65 if (!
sDatabase.RunQuery(res,
"SELECT classID, className, classNameID, description, dataID FROM crtClasses")) {
66 codelog(DATABASE__ERROR,
"Failed to query certificate classes: %s.", res.
error.
c_str());
77 "INSERT INTO chrCertificates (characterID, certificateID, grantDate, visibilityFlags)"
79 _log(DATABASE__ERROR,
"Failed to insert certificates of character %u: %s", charID, err.
c_str() );
86 "UPDATE chrCertificates SET visibilityFlags = %u WHERE characterID = %u AND certificateID = %u", (pub ? 1 : 0), charID, certificateID)) {
87 _log(DATABASE__ERROR,
"Failed to insert certificates of character %u: %s", charID, err.
c_str() );
95 if ( !
sDatabase.RunQuery( res,
"SELECT certificateID, grantDate, visibilityFlags FROM chrCertificates WHERE characterID=%u", characterID)) {
96 _log(DATABASE__ERROR,
"Failed to query certificates of character %u: %s", characterID, res.
error.
c_str() );
106 into.emplace(row.
GetUInt( 0 ), cert );
114 std::ostringstream Inserts;
116 Inserts <<
"INSERT INTO chrCertificates";
117 Inserts <<
" (characterID, certificateID, grantDate, visibilityFlags)";
119 for (
auto cur : data) {
121 Inserts <<
" VALUES ";
126 Inserts <<
"(" << characterID <<
", " << cur.first <<
", " << cur.second.grantDate <<
", " << cur.second.visibilityFlags <<
")";
130 Inserts <<
"ON DUPLICATE KEY UPDATE ";
131 Inserts <<
"visibilityFlags=VALUES(visibilityFlags)";
134 _log(DATABASE__ERROR,
"SaveCertificates - unable to save data - %s", err.
c_str());
PyRep * GetAllShipCertificateRecommendations()
bool LoadCertificates(uint32 characterID, CertMap &into)
#define _log(type, fmt,...)
bool SaveCertificates(uint32 characterID, const CertMap &from)
PyRep * GetCertificateClasses()
uint32 GetUInt(uint32 index) const
void UpdateCertificate(uint32 charID, uint32 certificateID, bool pub=false)
std::map< uint16, CharCerts > CertMap
bool GetRow(DBResultRow &into)
bool GetBool(uint32 index) const
const char * c_str() const
PyDict * DBResultToIntRowDict(DBQueryResult &result, uint32 key_index, const char *type)
#define codelog(type, fmt,...)
PyObject * DBResultToRowset(DBQueryResult &result)
PyRep * GetCertificateCategories()
PyObject * DBResultToIndexRowset(DBQueryResult &result, const char *key)
void AddCertificate(uint32 charID, CharCerts cert)
int64 GetInt64(uint32 index) const