from fastapi import Request, Response from fastapi_cache import FastAPICache def user_key_builder( func, namespace: str = "", request: Request = None, response: Response = None, *args, **kwargs, ): """ Custom key builder that includes the current user's ID in the cache key. This prevents caching data leaks across different teams/users. """ # Pega o usuário logado que foi injetado pela rota (no caso, via current_user) user = kwargs.get("current_user") user_id = user.id if user else "anonymous" # Cria uma chave única baseada no prefixo, namespace, nome da função, ID do usuário e parâmetros da URL return f"{FastAPICache.get_prefix()}:{namespace}:{func.__module__}:{func.__name__}:{user_id}:{request.url.query}"