"""Periodic cleanup of expired rows in the refresh-token revocation store (StockLab overhaul,
final engineering pass, Part A4). See app/core/token_revocation.py::prune_expired_revoked_tokens()
for why this is safe to delete (a revoked token past its own `exp` claim carries no remaining
security value -- decode_token() would already reject it on expiry alone)."""
from __future__ import annotations

from app.core.db import SessionLocal
from app.core.logging import get_logger
from app.core.token_revocation import prune_expired_revoked_tokens
from app.workers.celery_app import celery_app

logger = get_logger(__name__)


@celery_app.task(name="app.workers.token_cleanup.prune_expired_revoked_tokens_task")
def prune_expired_revoked_tokens_task() -> dict:
    db = SessionLocal()
    try:
        deleted = prune_expired_revoked_tokens(db)
        logger.info("token_cleanup.prune.complete", deleted_count=deleted)
        return {"deleted_count": deleted}
    finally:
        db.close()
