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)