Source code for pylav.storage.database.cache.functions
from __future__ import annotations
from collections.abc import Callable, Iterable
from typing import Any
from pylav.storage.database.cache.cache import CACHE
[docs]
def key_builder(method: Callable, *args: Any, **kwargs: Any) -> str: # noqa
return f"{method.__module__}:{args[0].__class__.__name__}:{method.__name__}:{args[0].get_cache_key()}" # noqa
[docs]
async def invalidate_cache(method: Callable, instance: object) -> None:
await CACHE.delete(key=key_builder(method, instance))
[docs]
async def update_cache(method: Callable, instance: object, value: Any) -> None:
await CACHE.set(key=key_builder(method, instance), value=value)
[docs]
async def update_cache_multi(pairs: Iterable[tuple[Callable, Any]], instance: object) -> None:
await CACHE.set_many(pairs={key_builder(method, instance): value for method, value in pairs})
[docs]
async def invalidate_cache_multi(methods: Iterable[Callable], instance: object) -> None:
await CACHE.delete_many(*[key_builder(method, instance) for method in methods])