summaryrefslogtreecommitdiff
path: root/src/ingestor.cpp
diff options
context:
space:
mode:
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