krz/hutch-stats
Server-side utility for calculating contributions for sourcehut users.
clone: git clone https://gitbay.org/krz/hutch-stats.git
main: src/srht_contrib/utils/retention.py · raw
1from __future__ import annotations
2
3from datetime import UTC, datetime, timedelta
4
5from sqlalchemy import delete
6from sqlalchemy.orm import Session
7
8from srht_contrib.models import ContributionEvent
9
10
11RETENTION_DAYS = 365
12
13
14def prune_contribution_events(db: Session, *, now: datetime | None = None) -> int:
15 cutoff = (now or datetime.now(tz=UTC)) - timedelta(days=RETENTION_DAYS)
16 result = db.execute(delete(ContributionEvent).where(ContributionEvent.occurred_at < cutoff))
17 return int(result.rowcount or 0)