from components.database import IN_MEMORY_DB from components.models import UUID, validate_call, constr from components.utils import ensure_list from components.logs import logger @validate_call def buster( bust_uuid: UUID | list[UUID] | list[constr(pattern=r"^[0-9a-fA-F]+$", min_length=16)] | constr(pattern=r"^[0-9a-fA-F]+$", min_length=16) ): bust_uuids = ensure_list(bust_uuid) for bust_uuid in bust_uuids: bust_uuid = str(bust_uuid) for user_id in IN_MEMORY_DB["CACHE"]["MODELS"]: cached_keys = list(IN_MEMORY_DB["CACHE"]["MODELS"][user_id].keys()) if bust_uuid in cached_keys: if bust_uuid in IN_MEMORY_DB["CACHE"]["MODELS"][user_id]: logger.debug(f"Cache buster 🧹 USER:{user_id};ITEM:{bust_uuid}") del IN_MEMORY_DB["CACHE"]["MODELS"][user_id][bust_uuid] for user_id in IN_MEMORY_DB["CACHE"]["FORMS"]: for option in IN_MEMORY_DB["CACHE"]["FORMS"][user_id].copy(): if any( d["value"] == bust_uuid for d in IN_MEMORY_DB["CACHE"]["FORMS"][user_id][option] ): del IN_MEMORY_DB["CACHE"]["FORMS"][user_id][option]