Gateprep / backend /app /core /cache_utils.py
banu4prasad's picture
code split: admin.py
049ecad
Raw
History Blame Contribute Delete
1.08 kB
import hashlib
from fastapi import BackgroundTasks
from fastapi_cache import FastAPICache
ADMIN_USERS_CACHE_NAMESPACE = "admin-users"
ADMIN_USERS_CACHE_SECONDS = 30
def admin_users_cache_key_builder(
func, namespace="", *, request=None, response=None, args=None, kwargs=None
) -> str:
if request is not None:
query_items = tuple(sorted(request.query_params.multi_items()))
else:
kwargs = kwargs or {}
query_items = tuple(
sorted(
(
key,
str(value.value if hasattr(value, "value") else value),
)
for key, value in kwargs.items()
if key in {"limit", "cursor", "q", "role"} and value is not None
)
)
query_hash = hashlib.sha256(repr(query_items).encode()).hexdigest()
return f"{namespace}:{func.__module__}:{func.__name__}:{query_hash}"
def clear_admin_users_cache(background_tasks: BackgroundTasks) -> None:
background_tasks.add_task(FastAPICache.clear, namespace=ADMIN_USERS_CACHE_NAMESPACE)