}
const auto deleteDownloadInfo = _queryManager.get(PreparedSqlQueryManager::DeleteDownloadInfoQuery, QByteArrayLiteral("DELETE FROM downloadinfo WHERE path=?1"), _db);
if (!deleteDownloadInfo) {
+ qCDebug(lcDb) << "database error:" << deleteDownloadInfo->error();
return sqlFail(QStringLiteral("prepare _deleteDownloadInfoQuery"), *deleteDownloadInfo);
}
const auto deleteUploadInfoQuery = _queryManager.get(PreparedSqlQueryManager::DeleteUploadInfoQuery, QByteArrayLiteral("DELETE FROM uploadinfo WHERE path=?1"), _db);
if (!deleteUploadInfoQuery) {
+ qCDebug(lcDb) << "database error:" << deleteUploadInfoQuery->error();
return sqlFail(QStringLiteral("prepare _deleteUploadInfoQuery"), *deleteUploadInfoQuery);
}
}
const auto getErrorBlacklistQuery = _queryManager.get(PreparedSqlQueryManager::GetErrorBlacklistQuery, sql, _db);
if (!getErrorBlacklistQuery) {
+ qCDebug(lcDb) << "database error:" << getErrorBlacklistQuery->error();
return sqlFail(QStringLiteral("prepare _getErrorBlacklistQuery"), *getErrorBlacklistQuery);
}
"VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28);"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return query->error();
}
query->bindValue(28, record._sharedByMe);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return query->error();
}
QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE type == 2 AND isE2eEncrypted >= ?1 AND isE2eEncrypted < ?2 ORDER BY path||'/' ASC"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, SyncJournalFileRecord::EncryptionStatus::Encrypted);
query->bindValue(2, status);
- if (!query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
forever {
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
- if (!next.hasData)
+ }
+
+ if (!next.hasData) {
break;
+ }
SyncJournalFileRecord rec;
fillFileRecordFromGetQuery(rec, *query);
const auto query = _queryManager.get(PreparedSqlQueryManager::SetKeyValueStoreQuery, QByteArrayLiteral("INSERT OR REPLACE INTO key_value_store (key, value) VALUES(?1, ?2);"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
query->bindValue(1, key);
query->bindValue(2, value);
- query->exec();
+
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
}
qint64 SyncJournalDb::keyValueStoreGetInt(const QString &key, qint64 defaultValue)
const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, QByteArrayLiteral("SELECT value FROM key_value_store WHERE key=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return defaultValue;
}
auto result = query->next();
if (!result.ok || !result.hasData) {
+ qCDebug(lcDb) << "database error:" << query->error();
return defaultValue;
}
{
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteKeyValueStoreQuery, QByteArrayLiteral("DELETE FROM key_value_store WHERE key=?1;"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
qCWarning(lcDb) << "Failed to initOrReset _deleteKeyValueStoreQuery";
Q_ASSERT(false);
}
query->bindValue(1, key);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
qCWarning(lcDb) << "Failed to exec _deleteKeyValueStoreQuery for key" << key;
Q_ASSERT(false);
}
{
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteFileRecordPhash, QByteArrayLiteral("DELETE FROM metadata WHERE phash=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, phash);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
}
if (recursively) {
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteFileRecordRecursively, QByteArrayLiteral("DELETE FROM metadata WHERE " IS_PREFIX_PATH_OF("?1", "path")), _db);
- if (!query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
+
query->bindValue(1, filename);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
}
rec->_path.clear();
Q_ASSERT(!rec->isValid());
- if (_metadataTableIsEmpty)
+ if (_metadataTableIsEmpty) {
return true; // no error, yet nothing found (rec->isValid() == false)
+ }
- if (!checkConnect())
+ if (!checkConnect()) {
return false;
+ }
if (!filename.isEmpty()) {
const auto query = _queryManager.get(PreparedSqlQueryManager::GetFileRecordQuery, QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE phash=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, getPHash(filename));
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
close();
return false;
}
if (!mangledName.isEmpty()) {
const auto query = _queryManager.get(PreparedSqlQueryManager::GetFileRecordQueryByMangledName, QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE e2eMangledName=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, mangledName);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
close();
return false;
}
rec->_path.clear();
Q_ASSERT(!rec->isValid());
- if (!inode || _metadataTableIsEmpty)
+ if (!inode || _metadataTableIsEmpty) {
return true; // no error, yet nothing found (rec->isValid() == false)
+ }
- if (!checkConnect())
+ if (!checkConnect()) {
return false;
+ }
+
const auto query = _queryManager.get(PreparedSqlQueryManager::GetFileRecordQueryByInode, QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE inode=?1"), _db);
- if (!query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
query->bindValue(1, inode);
- if (!query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
- if (next.hasData)
+ }
+ if (next.hasData) {
fillFileRecordFromGetQuery(*rec, *query);
+ }
return true;
}
{
QMutexLocker locker(&_mutex);
- if (fileId.isEmpty() || _metadataTableIsEmpty)
+ if (fileId.isEmpty() || _metadataTableIsEmpty) {
return true; // no error, yet nothing found (rec->isValid() == false)
+ }
- if (!checkConnect())
+ if (!checkConnect()) {
return false;
+ }
const auto query = _queryManager.get(PreparedSqlQueryManager::GetFileRecordQueryByFileId, QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE fileid=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, fileId);
- if (!query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
forever {
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
- if (!next.hasData)
+ }
+
+ if (!next.hasData) {
break;
+ }
SyncJournalFileRecord rec;
fillFileRecordFromGetQuery(rec, *query);
auto _exec = [&rowCallback](SqlQuery &query) {
if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
return false;
}
forever {
auto next = query.next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query.error();
return false;
- if (!next.hasData)
+ }
+ if (!next.hasData) {
break;
+ }
SyncJournalFileRecord rec;
fillFileRecordFromGetQuery(rec, query);
const auto query = _queryManager.get(PreparedSqlQueryManager::GetAllFilesQuery, QByteArrayLiteral(GET_FILE_RECORD_QUERY " ORDER BY path||'/' ASC"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
return _exec(*query);
" ORDER BY path||'/' ASC"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, path);
{
QMutexLocker locker(&_mutex);
- if (_metadataTableIsEmpty)
+ if (_metadataTableIsEmpty) {
return true;
+ }
- if (!checkConnect())
+ if (!checkConnect()) {
return false;
+ }
const auto query = _queryManager.get(PreparedSqlQueryManager::ListFilesInPathQuery, QByteArrayLiteral(GET_FILE_RECORD_QUERY " WHERE parent_hash(path) = ?1 ORDER BY path||'/' ASC"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, getPHash(path));
- if (!query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
+ }
forever {
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
- if (!next.hasData)
+ }
+
+ if (!next.hasData) {
break;
+ }
SyncJournalFileRecord rec;
fillFileRecordFromGetQuery(rec, *query);
" WHERE phash == ?1;"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(1, phash);
query->bindValue(2, contentChecksum);
query->bindValue(3, checksumTypeId);
- return query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return false;
+ }
+
+ return true;
}
bool SyncJournalDb::updateLocalMetadata(const QString &filename,
" WHERE phash == ?1;"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return false;
}
query->bindValue(9, lockInfo._lockEditorApp);
query->bindValue(10, lockInfo._lockTime);
query->bindValue(11, lockInfo._lockTimeout);
- return query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return false;
+ }
+ return true;
}
Optional<SyncJournalDb::HasHydratedDehydrated> SyncJournalDb::hasHydratedOrDehydratedFiles(const QByteArray &filename)
{
QMutexLocker locker(&_mutex);
- if (!checkConnect())
+ if (!checkConnect()) {
return {};
+ }
const auto query = _queryManager.get(PreparedSqlQueryManager::CountDehydratedFilesQuery, QByteArrayLiteral("SELECT DISTINCT type FROM metadata"
" WHERE (" IS_PREFIX_PATH_OR_EQUAL("?1", "path") " OR ?1 == '');"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return {};
}
query->bindValue(1, filename);
- if (!query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return {};
+ }
HasHydratedDehydrated result;
forever {
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return {};
- if (!next.hasData)
+ }
+ if (!next.hasData) {
break;
+ }
auto type = static_cast<ItemType>(query->intValue(0));
- if (type == ItemTypeFile || type == ItemTypeVirtualFileDehydration)
+ if (type == ItemTypeFile || type == ItemTypeVirtualFileDehydration) {
result.hasHydrated = true;
- if (type == ItemTypeVirtualFile || type == ItemTypeVirtualFileDownload)
+ }
+ if (type == ItemTypeVirtualFile || type == ItemTypeVirtualFileDownload) {
result.hasDehydrated = true;
+ }
}
return result;
if (checkConnect()) {
const auto query = _queryManager.get(PreparedSqlQueryManager::GetDownloadInfoQuery, QByteArrayLiteral("SELECT tmpfile, etag, errorcount FROM downloadinfo WHERE path=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return res;
}
query->bindValue(1, file);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return res;
}
"VALUES ( ?1 , ?2, ?3, ?4 )"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
query->bindValue(1, file);
query->bindValue(2, i._tmpfile);
query->bindValue(3, i._etag);
query->bindValue(4, i._errorCount);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
} else {
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteDownloadInfoQuery);
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, file);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
}
query.prepare("SELECT tmpfile, etag, errorcount, path FROM downloadinfo");
if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
return empty_result;
}
{
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteDownloadInfoQuery);
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return empty_result;
+ }
if (!deleteBatch(*query, superfluousPaths, QStringLiteral("downloadinfo"))) {
return empty_result;
}
"uploadinfo WHERE path=?1"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return res;
}
query->bindValue(1, file);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return res;
}
"VALUES ( ?1 , ?2, ?3 , ?4 , ?5, ?6 , ?7 )"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
query->bindValue(7, i._contentChecksum);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
} else {
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteUploadInfoQuery);
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
+
query->bindValue(1, file);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
}
if (checkConnect()) {
const auto query = _queryManager.get(PreparedSqlQueryManager::GetErrorBlacklistQuery);
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
+
query->bindValue(1, file);
- if (query->exec()) {
- if (query->next().hasData) {
- entry._lastTryEtag = query->baValue(0);
- entry._lastTryModtime = query->int64Value(1);
- entry._retryCount = query->intValue(2);
- entry._errorString = query->stringValue(3);
- entry._lastTryTime = query->int64Value(4);
- entry._ignoreDuration = query->int64Value(5);
- entry._renameTarget = query->stringValue(6);
- entry._errorCategory = static_cast<SyncJournalErrorBlacklistRecord::Category>(
- query->intValue(7));
- entry._requestId = query->baValue(8);
- entry._file = file;
- }
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
+
+ if (query->next().hasData) {
+ entry._lastTryEtag = query->baValue(0);
+ entry._lastTryModtime = query->int64Value(1);
+ entry._retryCount = query->intValue(2);
+ entry._errorString = query->stringValue(3);
+ entry._lastTryTime = query->int64Value(4);
+ entry._ignoreDuration = query->int64Value(5);
+ entry._renameTarget = query->stringValue(6);
+ entry._errorCategory = static_cast<SyncJournalErrorBlacklistRecord::Category>(query->intValue(7));
+ entry._requestId = query->baValue(8);
+ entry._file = file;
}
}
"VALUES ( ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)"),
_db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return;
}
query->bindValue(8, item._renameTarget);
query->bindValue(9, item._errorCategory);
query->bindValue(10, item._requestId);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
}
QVector<SyncJournalDb::PollInfo> SyncJournalDb::getPollInfos()
const auto query = _queryManager.get(PreparedSqlQueryManager::GetSelectiveSyncListQuery, QByteArrayLiteral("SELECT path FROM selectivesync WHERE type=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
*ok = false;
return result;
}
query->bindValue(1, int(type));
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
*ok = false;
return result;
}
forever {
auto next = query->next();
if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
*ok = false;
return result;
}
// Retrieve the id
const auto query = _queryManager.get(PreparedSqlQueryManager::GetChecksumTypeQuery, QByteArrayLiteral("SELECT name FROM checksumtype WHERE id=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return {};
}
query->bindValue(1, checksumTypeId);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return QByteArray();
}
{
const auto query = _queryManager.get(PreparedSqlQueryManager::InsertChecksumTypeQuery, QByteArrayLiteral("INSERT OR IGNORE INTO checksumtype (name) VALUES (?1)"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return 0;
}
query->bindValue(1, checksumType);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return 0;
}
}
{
const auto query = _queryManager.get(PreparedSqlQueryManager::GetChecksumTypeIdQuery, QByteArrayLiteral("SELECT id FROM checksumtype WHERE name=?1"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return 0;
}
query->bindValue(1, checksumType);
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return 0;
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetDataFingerprintQuery, QByteArrayLiteral("SELECT fingerprint FROM datafingerprint"), _db);
if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
return QByteArray();
}
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return QByteArray();
}
const auto setDataFingerprintQuery1 = _queryManager.get(PreparedSqlQueryManager::SetDataFingerprintQuery1, QByteArrayLiteral("DELETE FROM datafingerprint;"), _db);
const auto setDataFingerprintQuery2 = _queryManager.get(PreparedSqlQueryManager::SetDataFingerprintQuery2, QByteArrayLiteral("INSERT INTO datafingerprint (fingerprint) VALUES (?1);"), _db);
- if (!setDataFingerprintQuery1 || !setDataFingerprintQuery2) {
+ if (!setDataFingerprintQuery1) {
+ qCDebug(lcDb) << "database error:" << setDataFingerprintQuery1->error();
+ return;
+ }
+ if (!setDataFingerprintQuery2) {
+ qCDebug(lcDb) << "database error:" << setDataFingerprintQuery2->error();
return;
}
- setDataFingerprintQuery1->exec();
+ if (!setDataFingerprintQuery1->exec()) {
+ qCDebug(lcDb) << "database error:" << setDataFingerprintQuery1->error();
+ }
setDataFingerprintQuery2->bindValue(1, dataFingerprint);
- setDataFingerprintQuery2->exec();
+ if (!setDataFingerprintQuery2->exec()) {
+ qCDebug(lcDb) << "database error:" << setDataFingerprintQuery2->error();
+ }
}
void SyncJournalDb::setConflictRecord(const ConflictRecord &record)
"(path, baseFileId, baseModtime, baseEtag, basePath) "
"VALUES (?1, ?2, ?3, ?4, ?5);"),
_db);
- ASSERT(query)
+
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
+
query->bindValue(1, record.path);
query->bindValue(2, record.baseFileId);
query->bindValue(3, record.baseModtime);
query->bindValue(4, record.baseEtag);
query->bindValue(5, record.initialBasePath);
- ASSERT(query->exec())
+ if(!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
ConflictRecord SyncJournalDb::conflictRecord(const QByteArray &path)
return entry;
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetConflictRecordQuery, QByteArrayLiteral("SELECT baseFileId, baseModtime, baseEtag, basePath FROM conflicts WHERE path=?1;"), _db);
- ASSERT(query)
+ if(!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
+
query->bindValue(1, path);
- ASSERT(query->exec())
+ if(!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
if (!query->next().hasData)
return entry;
"(path, baseFileId, baseModtime, baseEtag, basePath) "
"VALUES (?1, ?2, ?3, ?4, ?5);"),
_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
+
query->bindValue(1, record.path);
query->bindValue(2, record.baseFileId);
query->bindValue(3, record.baseModtime);
query->bindValue(4, record.baseEtag);
query->bindValue(5, record.initialBasePath);
- ASSERT(query->exec())
+ if(!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
ConflictRecord SyncJournalDb::caseConflictRecordByBasePath(const QString &baseNamePath)
return entry;
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetCaseClashConflictRecordQuery, QByteArrayLiteral("SELECT path, baseFileId, baseModtime, baseEtag, basePath FROM caseconflicts WHERE basePath=?1;"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
query->bindValue(1, baseNamePath);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
if (!query->next().hasData)
return entry;
return entry;
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetCaseClashConflictRecordByPathQuery, QByteArrayLiteral("SELECT path, baseFileId, baseModtime, baseEtag, basePath FROM caseconflicts WHERE path=?1;"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
query->bindValue(1, path);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return entry;
+ }
if (!query->next().hasData)
return entry;
return;
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteCaseClashConflictRecordQuery, QByteArrayLiteral("DELETE FROM caseconflicts WHERE path=?1;"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, path);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
QByteArrayList SyncJournalDb::caseClashConflictRecordPaths()
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetAllCaseClashConflictPathQuery, QByteArrayLiteral("SELECT path FROM caseconflicts;"), _db);
- ASSERT(query)
- ASSERT(query->exec())
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
QByteArrayList paths;
while (query->next().hasData)
return;
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteConflictRecordQuery, QByteArrayLiteral("DELETE FROM conflicts WHERE path=?1;"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, path);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
QByteArrayList SyncJournalDb::conflictRecordPaths()
SqlQuery query(_db);
query.prepare("SELECT path FROM conflicts");
- ASSERT(query.exec());
+ if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
+ return {};
+ }
QByteArrayList paths;
while (query.next().hasData)
query.prepare("DELETE FROM metadata;");
if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
sqlFail(QStringLiteral("clearFileTable"), query);
}
}
query.bindValue(1, path);
if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
sqlFail(QStringLiteral("markVirtualFileForDownloadRecursively UPDATE metadata SET type=5 path: %1").arg(QString::fromUtf8(path)), query);
}
query.bindValue(1, path);
if (!query.exec()) {
+ qCDebug(lcDb) << "database error:" << query.error();
sqlFail(QStringLiteral("markVirtualFileForDownloadRecursively UPDATE metadata SET md5='_invalid_' path: %1").arg(QString::fromUtf8(path)), query);
}
}
"(folderId, token) "
"VALUES (?1, ?2);"),
_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, folderId);
query->bindValue(2, folderToken);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
QByteArray SyncJournalDb::e2EeLockedFolder(const QByteArray &folderId)
const auto query = _queryManager.get(PreparedSqlQueryManager::GetE2EeLockedFolderQuery,
QByteArrayLiteral("SELECT token FROM e2EeLockedFolders WHERE folderId=?1;"),
_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
query->bindValue(1, folderId);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
if (!query->next().hasData) {
return {};
}
}
const auto query = _queryManager.get(PreparedSqlQueryManager::GetE2EeLockedFoldersQuery, QByteArrayLiteral("SELECT * FROM e2EeLockedFolders"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return res;
+ }
if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
return res;
}
}
const auto query = _queryManager.get(PreparedSqlQueryManager::DeleteE2EeLockedFolderQuery, QByteArrayLiteral("DELETE FROM e2EeLockedFolders WHERE folderId=?1;"), _db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, folderId);
- ASSERT(query->exec())
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
Optional<PinState> SyncJournalDb::PinStateInterface::rawForPath(const QByteArray &path)
return {};
const auto query = _db->_queryManager.get(PreparedSqlQueryManager::GetRawPinStateQuery, QByteArrayLiteral("SELECT pinState FROM flags WHERE path == ?1;"), _db->_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
query->bindValue(1, path);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
auto next = query->next();
if (!next.ok)
Optional<PinState> SyncJournalDb::PinStateInterface::effectiveForPath(const QByteArray &path)
{
QMutexLocker lock(&_db->_mutex);
- if (!_db->checkConnect())
+ if (!_db->checkConnect()) {
return {};
+ }
const auto query = _db->_queryManager.get(PreparedSqlQueryManager::GetEffectivePinStateQuery, QByteArrayLiteral("SELECT pinState FROM flags WHERE"
// explicitly allow "" to represent the root path
" AND pinState is not null AND pinState != 0"
" ORDER BY length(path) DESC LIMIT 1;"),
_db->_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
query->bindValue(1, path);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
auto next = query->next();
if (!next.ok)
// Get the item's effective pin state. We'll compare subitem's pin states
// against this.
const auto basePin = effectiveForPath(path);
- if (!basePin)
+ if (!basePin) {
return {};
+ }
QMutexLocker lock(&_db->_mutex);
- if (!_db->checkConnect())
+ if (!_db->checkConnect()) {
return {};
+ }
// Find all the non-inherited pin states below the item
const auto query = _db->_queryManager.get(PreparedSqlQueryManager::GetSubPinsQuery, QByteArrayLiteral("SELECT DISTINCT pinState FROM flags WHERE"
" (" IS_PREFIX_PATH_OF("?1", "path") " OR ?1 == '')"
" AND pinState is not null and pinState != 0;"),
_db->_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
query->bindValue(1, path);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return {};
+ }
// Check if they are all identical
forever {
auto next = query->next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query->error();
return {};
- if (!next.hasData)
+ }
+ if (!next.hasData) {
break;
+ }
const auto subPin = static_cast<PinState>(query->intValue(0));
- if (subPin != *basePin)
+ if (subPin != *basePin) {
return PinState::Inherited;
+ }
}
return *basePin;
void SyncJournalDb::PinStateInterface::setForPath(const QByteArray &path, PinState state)
{
QMutexLocker lock(&_db->_mutex);
- if (!_db->checkConnect())
+ if (!_db->checkConnect()) {
return;
+ }
const auto query = _db->_queryManager.get(PreparedSqlQueryManager::SetPinStateQuery, QByteArrayLiteral(
// If we had sqlite >=3.24.0 everywhere this could be an upsert,
// Simple version that doesn't work nicely with multiple columns:
"INSERT OR REPLACE INTO flags(path, pinState) VALUES(?1, ?2);"),
_db->_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, path);
query->bindValue(2, state);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
void SyncJournalDb::PinStateInterface::wipeForPathAndBelow(const QByteArray &path)
{
QMutexLocker lock(&_db->_mutex);
- if (!_db->checkConnect())
+ if (!_db->checkConnect()) {
return;
+ }
const auto query = _db->_queryManager.get(PreparedSqlQueryManager::WipePinStateQuery, QByteArrayLiteral("DELETE FROM flags WHERE "
// Allow "" to delete everything
" (" IS_PREFIX_PATH_OR_EQUAL("?1", "path") " OR ?1 == '');"),
_db->_db);
- ASSERT(query)
+ if (!query) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ return;
+ }
query->bindValue(1, path);
- query->exec();
+ if (!query->exec()) {
+ qCDebug(lcDb) << "database error:" << query->error();
+ }
}
Optional<QVector<QPair<QByteArray, PinState>>>
SyncJournalDb::PinStateInterface::rawList()
{
QMutexLocker lock(&_db->_mutex);
- if (!_db->checkConnect())
+ if (!_db->checkConnect()) {
return {};
+ }
SqlQuery query("SELECT path, pinState FROM flags;", _db->_db);
QVector<QPair<QByteArray, PinState>> result;
forever {
auto next = query.next();
- if (!next.ok)
+ if (!next.ok) {
+ qCDebug(lcDb) << "database error:" << query.error();
return {};
- if (!next.hasData)
+ }
+ if (!next.hasData) {
break;
+ }
result.append({ query.baValue(0), static_cast<PinState>(query.intValue(1)) });
}
return result;