1import datetime
2
3from plain.chores import Chore, register_chore
4from plain.runtime import settings
5from plain.utils import timezone
6
7from .models import JobResult
8
9
10@register_chore
11class ClearCompleted(Chore):
12 """Delete all completed job results in all queues."""
13
14 def run(self) -> str:
15 cutoff = timezone.now() - datetime.timedelta(
16 seconds=settings.JOBS_RESULTS_RETENTION
17 )
18 count = JobResult.query.filter(created_at__lt=cutoff).delete()
19 return f"{count} jobs deleted"