| 
                        12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
                        - import json
 - from enum import Enum
 - from json import JSONDecodeError
 - from typing import Optional
 - 
 - from extensions.ext_redis import redis_client
 - 
 - 
 - class ToolParameterCacheType(Enum):
 -     PARAMETER = "tool_parameter"
 - 
 - 
 - class ToolParameterCache:
 -     def __init__(
 -         self, tenant_id: str, provider: str, tool_name: str, cache_type: ToolParameterCacheType, identity_id: str
 -     ):
 -         self.cache_key = (
 -             f"{cache_type.value}_secret:tenant_id:{tenant_id}:provider:{provider}:tool_name:{tool_name}"
 -             f":identity_id:{identity_id}"
 -         )
 - 
 -     def get(self) -> Optional[dict]:
 -         """
 -         Get cached model provider credentials.
 - 
 -         :return:
 -         """
 -         cached_tool_parameter = redis_client.get(self.cache_key)
 -         if cached_tool_parameter:
 -             try:
 -                 cached_tool_parameter = cached_tool_parameter.decode("utf-8")
 -                 cached_tool_parameter = json.loads(cached_tool_parameter)
 -             except JSONDecodeError:
 -                 return None
 - 
 -             return cached_tool_parameter
 -         else:
 -             return None
 - 
 -     def set(self, parameters: dict) -> None:
 -         """
 -         Cache model provider credentials.
 - 
 -         :param credentials: provider credentials
 -         :return:
 -         """
 -         redis_client.setex(self.cache_key, 86400, json.dumps(parameters))
 - 
 -     def delete(self) -> None:
 -         """
 -         Delete cached model provider credentials.
 - 
 -         :return:
 -         """
 -         redis_client.delete(self.cache_key)
 
 
  |