7 #include "databasehandler.hpp"
20 vector<unsigned long> NinkaDatabaseHandler::queryFileIdsForUpload(
int uploadId)
26 bool NinkaDatabaseHandler::saveLicenseMatch(
int agentId,
long pFileId,
long licenseId,
unsigned percentMatch)
29 fo_dbManager_PrepareStamement(
32 "INSERT INTO license_file (agent_fk, pfile_fk, rf_fk, rf_match_pct) VALUES ($1, $2, $3, $4)",
33 int,
long,
long,
unsigned
42 unsigned long NinkaDatabaseHandler::selectOrInsertLicenseIdForName(
string rfShortName)
45 unsigned long result = 0;
48 while ((!success) && count++<3)
56 fo_dbManager_PrepareStamement(
58 "selectOrInsertLicenseIdForName",
61 "SELECT rf_pk FROM ONLY license_ref"
62 " WHERE rf_shortname = $1"
65 "INSERT INTO license_ref(rf_shortname, rf_text, rf_detector_type)"
67 " WHERE NOT EXISTS(SELECT * FROM selectExisting)"
71 "SELECT rf_pk FROM insertNew "
73 "SELECT rf_pk FROM selectExisting",
81 success = queryResult && queryResult.
getRowCount() > 0;
103 void NinkaDatabaseHandler::insertOrCacheLicenseIdForName(
string const& rfShortName)
105 if (getCachedLicenseIdForName(rfShortName)==0)
107 unsigned long licenseId = selectOrInsertLicenseIdForName(rfShortName);
111 licenseRefCache.insert(std::make_pair(rfShortName, licenseId));
116 unsigned long NinkaDatabaseHandler::getCachedLicenseIdForName(
string const& rfShortName)
const
118 std::unordered_map<string,long>::const_iterator findIterator = licenseRefCache.find(rfShortName);
119 if (findIterator != licenseRefCache.end())
121 return findIterator->second;
Database handler for agents.
std::vector< unsigned long > queryFileIdsVectorForUpload(int uploadId, bool ignoreFilesWithMimeType) const
Get pfile ids for a given upload id.
DbManager dbManager
DbManager to use.
QueryResult execPrepared(fo_dbManager_PreparedStatement *stmt,...) const
Execute a prepared statement with new parameters.
QueryResult queryPrintf(const char *queryFormat,...) const
Execute a query in printf format.
fo_dbManager * getStruct_dbManager() const
std::vector< T > getSimpleResults(int columnN, T(functionP)(const char *)) const
Get vector of a single column from query result.
General utility functions for CPP.
fo_dbManager * dbManager
fo_dbManager object
fo namespace holds the FOSSology library functions.
unsigned long stringToUnsignedLong(const char *string)