# retoor from datetime import datetime, timedelta, timezone from molodetz.database import count_audit, get_int_setting, prune_audit, prune_expired_sessions from molodetz.services.base import BaseService class HousekeepingService(BaseService): name = "housekeeping" title = "Housekeeping" description = "Ruimt verlopen sessies op en snoeit het auditlog volgens de bewaartermijn." default_interval = 3600 min_interval = 60 metrics_interval = 300 def __init__(self): super().__init__() self.last_sessions = 0 self.last_audit = 0 async def run_once(self): self.last_sessions = prune_expired_sessions() days = max(1, get_int_setting("audit_retention_days", 365)) cutoff = (datetime.now(timezone.utc) - timedelta(days=days)).isoformat() self.last_audit = prune_audit(cutoff) self.log(f"sessies verwijderd: {self.last_sessions}, auditregels gesnoeid: {self.last_audit}") def collect_metrics(self): return { "cards": [ {"label": "Auditregels", "value": count_audit()}, {"label": "Laatste sessie-opruiming", "value": self.last_sessions}, {"label": "Laatste auditsnoei", "value": self.last_audit}, ], "table": None, }