diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-12-20 15:16:25 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2025-12-20 15:16:25 +0000 |
| commit | 30a9d45f5322a63c2adf1de7a248ba3a9a0c3903 (patch) | |
| tree | a384473d3be0d5f3fc8c358c827b6cf158d187b3 /src/ingestor.cpp | |
| parent | f8276d22b6501e3d6164f9b26df94d2d57f597e5 (diff) | |
| download | webstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.tar.bz2 webstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.tar.xz webstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.zip | |
Diffstat (limited to 'src/ingestor.cpp')
| -rw-r--r-- | src/ingestor.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/ingestor.cpp b/src/ingestor.cpp index 0c9ce4e..44107ce 100644 --- a/src/ingestor.cpp +++ b/src/ingestor.cpp @@ -221,6 +221,7 @@ namespace WebStat { } }; runJobAsNeeded(&Ingestor::jobIngestParkedLines, lastRunIngestParkedLines, settings.freqIngestParkedLines); + runJobAsNeeded(&Ingestor::jobPurgeOldLogs, lastRunPurgeOldLogs, settings.freqPurgeOldLogs); } void @@ -260,6 +261,26 @@ namespace WebStat { std::filesystem::remove(path); } + unsigned int + Ingestor::jobPurgeOldLogs() + { + auto dbconn = dbpool->get(); + const auto stopAt = JobLastRunTime::clock::now() + settings.purgeDeleteMaxTime; + const auto purge = dbconn->modify(SQL::ACCESS_LOG_PURGE_OLD, SQL::ACCESS_LOG_PURGE_OLD_OPTS); + purge->bindParam(0, settings.purgeDeleteMax); + purge->bindParam(1, std::format("{} days", settings.purgeDaysToKeep)); + unsigned int purgedTotal {}; + while (stopAt > JobLastRunTime::clock::now()) { + const auto purged = purge->execute(); + purgedTotal += purged; + if (purged < settings.purgeDeleteMax) { + break; + } + std::this_thread::sleep_for(settings.purgeDeletePause); + } + return purgedTotal; + } + template<typename... T> Ingestor::NewEntities Ingestor::newEntities(const std::tuple<T...> & values) const |
