summaryrefslogtreecommitdiff
path: root/src/ingestor.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-12-20 15:16:25 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2025-12-20 15:16:25 +0000
commit30a9d45f5322a63c2adf1de7a248ba3a9a0c3903 (patch)
treea384473d3be0d5f3fc8c358c827b6cf158d187b3 /src/ingestor.cpp
parentf8276d22b6501e3d6164f9b26df94d2d57f597e5 (diff)
downloadwebstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.tar.bz2
webstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.tar.xz
webstat-30a9d45f5322a63c2adf1de7a248ba3a9a0c3903.zip
Add job for puring old access log entries from the databaseHEADmain
Diffstat (limited to 'src/ingestor.cpp')
-rw-r--r--src/ingestor.cpp21
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