diff options
Diffstat (limited to 'src/srht_contrib/utils')
| -rw-r--r-- | src/srht_contrib/utils/retention.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/srht_contrib/utils/retention.py b/src/srht_contrib/utils/retention.py new file mode 100644 index 0000000..5018b32 --- /dev/null +++ b/src/srht_contrib/utils/retention.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from datetime import UTC, datetime, timedelta + +from sqlalchemy import delete +from sqlalchemy.orm import Session + +from srht_contrib.models import ContributionEvent + + +RETENTION_DAYS = 365 + + +def prune_contribution_events(db: Session, *, now: datetime | None = None) -> int: + cutoff = (now or datetime.now(tz=UTC)) - timedelta(days=RETENTION_DAYS) + result = db.execute(delete(ContributionEvent).where(ContributionEvent.occurred_at < cutoff)) + return int(result.rowcount or 0) |
