"""passbook core tasks"""
from structlog import get_logger

from passbook.core.models import ExpiringModel
from passbook.root.celery import CELERY_APP

LOGGER = get_logger()


@CELERY_APP.task()
def clean_expired_models():
    """Remove expired objects"""
    for cls in ExpiringModel.__subclasses__():
        cls: ExpiringModel
        amount, _ = cls.filter_not_expired().delete()
        LOGGER.debug("Deleted expired models", model=cls, amount=amount)