From 30a9d45f5322a63c2adf1de7a248ba3a9a0c3903 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Dec 2025 15:16:25 +0000 Subject: Add job for puring old access log entries from the database --- src/ingestor.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/ingestor.cpp') 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 Ingestor::NewEntities Ingestor::newEntities(const std::tuple & values) const -- cgit v1.2.3