QString SimpleJsonDB::jsonString() { acquireWriteLock(); QString dbString = db->toJson(QMJsonFormat_Pretty, QMJsonSort_CaseSensitive); if (filterVmAndDomstoreKeys) { auto filteredValue = QMJsonValue::fromJson(dbString); if (filteredValue.isNull()) { qCritical("unable to convert db string to qmjsonvalue!"); exit(1); } if (!filteredValue->isObject()) { qCritical("db qmjsonvalue is not an object!"); exit(1); } filteredValue->toObject()->remove("vm"); filteredValue->toObject()->remove("dom-store"); dbString = filteredValue->toJson(QMJsonFormat_Pretty, QMJsonSort_CaseSensitive); } releaseWriteLock(); return dbString; }
void SimpleJsonDB::readFromDisk() { acquireWriteLock(); if (path != ":memory:") { QFile dbFile(path); if (dbFile.exists()) { db = QMJsonValue::fromJsonFile(path); qDebug() << "db from json file:" << db; // XXX: fix desired https://github.com/QtMark/qmjson/issues/9 if (db.isNull() || !db->isObject()) { // save off bad db file for later review, but do not abort // this is preferable than failing to boot if dbd doesn't come up qCritical() << "failed to read db:" << path << "malformed?" << dbFile.readAll(); qCritical() << "moving bad db from:" << path << "to:" << path + ".bad"; dbFile.rename(path + ".bad"); } } } // if no json file exists, create empty object if (db.isNull() || !db->isObject()) { qDebug() << "creating default empty object for db:" << path; auto obj = QMPointer<QMJsonObject>(new QMJsonObject()); db = QMPointer<QMJsonValue>(new QMJsonValue(obj)); } releaseWriteLock(); }
void IndexReader::deleteDocument(int32_t docNum) { SyncLock syncLock(this); ensureOpen(); acquireWriteLock(); _hasChanges = true; doDelete(docNum); }
void IndexReader::undeleteAll() { SyncLock syncLock(this); ensureOpen(); acquireWriteLock(); _hasChanges = true; doUndeleteAll(); }
void IndexReader::setNorm(int32_t doc, const String& field, uint8_t value) { SyncLock syncLock(this); ensureOpen(); acquireWriteLock(); _hasChanges = true; doSetNorm(doc, field, value); }