From c072e2ed7c740875df4989fd1b31d748b5b03490 Mon Sep 17 00:00:00 2001 From: Gemba Date: Wed, 20 May 2026 22:23:51 +0200 Subject: [PATCH] refactorings of cache (minor) --- src/cache.cpp | 66 +++++++++++++++++++++++----------------------- src/cache.h | 5 ++-- src/skyscraper.cpp | 4 +-- test/Makefile | 2 +- 4 files changed, 38 insertions(+), 39 deletions(-) diff --git a/src/cache.cpp b/src/cache.cpp index 7dddd959..a1973c27 100644 --- a/src/cache.cpp +++ b/src/cache.cpp @@ -278,8 +278,7 @@ bool Cache::read() { cacheFile.close(); resAtLoad = resources.length(); ncprintf("\033[1;32mDone!\033[0m\n"); - ncprintf("Successfully parsed %d resources!\n\n", - static_cast(resources.length())); + ncprintf("Successfully parsed %d resources!\n\n", resAtLoad); return true; } return false; @@ -1553,38 +1552,38 @@ bool Cache::write(const bool onlyQuickId) { xml.writeEndDocument(); ncprintf("\033[1;32mDone!\033[0m\n"); quickIdFile.close(); - if (onlyQuickId) { - return true; - } } - bool result = false; - QFile cacheFile(dbFilePath()); - if (cacheFile.open(QIODevice::WriteOnly)) { - int resCountNew = static_cast(resources.length()); - int delta = resCountNew - resAtLoad; - ncprintf("Writing %d (%d%s) resource%s to cache, please wait... ", - resCountNew, delta, delta < 0 ? "" : " new", - resCountNew == 1 ? "" : "s"); - fflush(stdout); - QXmlStreamWriter xml(&cacheFile); - xml.setAutoFormatting(true); - xml.writeStartDocument(); - xml.writeStartElement("resources"); - for (const auto &resource : resources) { - xml.writeStartElement(R_ELEM); - xml.writeAttribute(ATTR_ID, resource.cacheId); - xml.writeAttribute(ATTR_TYPE, resource.type); - xml.writeAttribute(ATTR_SRC, resource.source); - xml.writeAttribute(ATTR_TS, QString::number(resource.timestamp)); - xml.writeCharacters(resource.value); + bool result = onlyQuickId || false; + if (!onlyQuickId) { + QFile cacheFile(dbFilePath()); + if (cacheFile.open(QIODevice::WriteOnly)) { + int resCountNew = static_cast(resources.length()); + int delta = resCountNew - resAtLoad; + ncprintf("Writing %d (%d%s) resource%s to cache, please wait... ", + resCountNew, delta, delta < 0 ? "" : " new", + resCountNew == 1 ? "" : "s"); + fflush(stdout); + QXmlStreamWriter xml(&cacheFile); + xml.setAutoFormatting(true); + xml.writeStartDocument(); + xml.writeStartElement("resources"); + for (const auto &resource : resources) { + xml.writeStartElement(R_ELEM); + xml.writeAttribute(ATTR_ID, resource.cacheId); + xml.writeAttribute(ATTR_TYPE, resource.type); + xml.writeAttribute(ATTR_SRC, resource.source); + xml.writeAttribute(ATTR_TS, + QString::number(resource.timestamp)); + xml.writeCharacters(resource.value); + xml.writeEndElement(); + } xml.writeEndElement(); + xml.writeEndDocument(); + result = true; + ncprintf("\033[1;32mDone!\033[0m\n\n"); + cacheFile.close(); } - xml.writeEndElement(); - xml.writeEndDocument(); - result = true; - ncprintf("\033[1;32mDone!\033[0m\n\n"); - cacheFile.close(); } return result; } @@ -1657,12 +1656,13 @@ void Cache::verifyFiles(QDirIterator &dirIt, int &filesDeleted, } } -void Cache::merge(Cache &mergeCache, bool overwrite, - const QString &mergeCacheFolder) { +void Cache::merge(bool overwrite, const QString &otherCacheFolder) { + Cache mergeCache(otherCacheFolder); + mergeCache.read(); ncprintf("Merging databases, please wait...\n"); QList mergeResources = mergeCache.getResources(); - QDir mergeCacheDir(mergeCacheFolder); + QDir mergeCacheDir(otherCacheFolder); mergeCacheDir.makeAbsolute(); int resUpdated = 0; diff --git a/src/cache.h b/src/cache.h index 78aa702d..26ad4dbf 100644 --- a/src/cache.h +++ b/src/cache.h @@ -104,8 +104,9 @@ class Cache { bool hasEntries(const QString &cacheId, const QString scraper = ""); void addQuickId(const QFileInfo &info, const QString &cacheId); QString getQuickId(const QFileInfo &info); - void merge(Cache &mergeCache, bool overwrite, - const QString &mergeCacheFolder); + void merge(bool overwrite, const QString &otherCacheFolder); + +private: QList getResources(); private: diff --git a/src/skyscraper.cpp b/src/skyscraper.cpp index fa2712bb..3386ef7e 100644 --- a/src/skyscraper.cpp +++ b/src/skyscraper.cpp @@ -263,9 +263,7 @@ void Skyscraper::run() { const QString absMergeCacheFilePath = mergeCacheInfo.absoluteFilePath(); if (mergeCacheInfo.isDir()) { - Cache mergeCache(absMergeCacheFilePath); - mergeCache.read(); - cache->merge(mergeCache, config.refresh, absMergeCacheFilePath); + cache->merge(config.refresh, absMergeCacheFilePath); state = NO_INTR; cache->write(); state = SINGLE; diff --git a/test/Makefile b/test/Makefile index 6a87effc..6b114336 100644 --- a/test/Makefile +++ b/test/Makefile @@ -17,4 +17,4 @@ clean: cd .. ; \ ) -all: clean tests \ No newline at end of file +all: clean tests