"""Удаление устаревших events и resolved problems.""" from datetime import datetime, timedelta, timezone from sqlalchemy import delete from sqlalchemy.orm import Session from app.config import Settings from app.models import Event, Problem def purge_old_data(db: Session, settings: Settings) -> dict: """ Events: received_at старше sac_events_retention_days. Problems: status=resolved и updated_at старше sac_problems_retention_days. """ now = datetime.now(timezone.utc) events_cutoff = now - timedelta(days=settings.sac_events_retention_days) problems_cutoff = now - timedelta(days=settings.sac_problems_retention_days) events_result = db.execute(delete(Event).where(Event.received_at < events_cutoff)) events_deleted = events_result.rowcount or 0 problems_result = db.execute( delete(Problem).where( Problem.status == "resolved", Problem.updated_at < problems_cutoff, ) ) problems_deleted = problems_result.rowcount or 0 db.commit() return { "events_deleted": events_deleted, "problems_deleted": problems_deleted, "events_cutoff": events_cutoff.isoformat(), "problems_cutoff": problems_cutoff.isoformat(), }