basis/components/cache.py
apeters 519dbc73c6 Cat.
Signed-off-by: apeters <apeters@korves.net>
2025-06-03 11:40:56 +00:00

32 lines
1.2 KiB
Python

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]