PyObject *run(PyObject *self, PyObject *args) { struct Runobj runobj = {0}; struct Result rst = {0}; rst.re_call = -1; if(initRun(&runobj, args)){ if(runobj.args) free((void*)runobj.args); return NULL; } if(runit(&runobj, &rst) == -1) return NULL; if(runobj.args) free((void*)runobj.args); return genResult(&rst); }
void Database::createOrUpdateCacheTableFromServer(const QSqlDatabase& dbMaster, const QSqlDatabase& dbCache, const QString& field, const QString& table, const QUuid* userId) { try { QDateTime ts = getUpdateTimestampForTable(dbCache, table, userId); QSqlQuery queryMaster(dbMaster); queryMaster.setForwardOnly(true); queryMaster.prepare("SELECT * FROM " + table + " WHERE " + field + " > ? ORDER BY " + field); queryMaster.bindValue(0, datetimeToString(ts)); if (!queryMaster.exec()) throw DatabaseException(queryMaster); while (queryMaster.next()) { QDateTime updated = Database::replaceCacheRecordByServerRecord(dbCache, table, queryMaster); if (ts < updated) ts = updated; if (table == "genresult") { GenResultDAO* genResultDAO = GenResultDAO::getInstance(); Q_ASSERT(genResultDAO); QSqlRecord record = queryMaster.record(); GenResult genResult(record); if (genResult.getParentId().isNull()) { QUuid id(genResult.getId()); PackagesDAO* packagesDAO = PackagesDAO::getInstance(); Q_ASSERT(packagesDAO); QObject parent; FPackage* projectDoc = packagesDAO->getPackage(genResult.getPackageHash(), &parent); SeDocument* document = projectDoc->getDocument(genResult.getResultId()); if (document) { QStandardItem root; genResultDAO->loadItemModel(id, document, &root); GenIndexDAO* genIndexDAO = GenIndexDAO::getInstance(); Q_ASSERT(genIndexDAO); genIndexDAO->saveItemModel(id, &root); } SeDocument* journal = projectDoc->getJournal(genResult.getResultId()); if (journal) { QStandardItem root; genResultDAO->loadItemModel(id, journal, &root); GenIndexDAO* genIndexDAO = GenIndexDAO::getInstance(); Q_ASSERT(genIndexDAO); genIndexDAO->saveItemModel(id, &root); } SeDocument*report = projectDoc->getReport(genResult.getResultId()); if (report) { QStandardItem root; genResultDAO->loadItemModel(id, report, &root); GenIndexDAO* genIndexDAO = GenIndexDAO::getInstance(); Q_ASSERT(genIndexDAO); genIndexDAO->saveItemModel(id, &root); } SeDocument* advsearch = projectDoc->getAdvSearch(genResult.getResultId()); if (advsearch) { QStandardItem root; genResultDAO->loadItemModel(id, advsearch, &root); GenIndexDAO* genIndexDAO = GenIndexDAO::getInstance(); Q_ASSERT(genIndexDAO); genIndexDAO->saveItemModel(id, &root); } } } } setUpdateTimestampForTable(dbCache, table, userId, ts); } catch (DatabaseException dbException) { dbException.displayMessage(); } }