diff --git a/lib/cache.py b/lib/cache.py index 51d7962..bb1f857 100644 --- a/lib/cache.py +++ b/lib/cache.py @@ -29,12 +29,13 @@ def get_cached_result(content_hash: str, reset_ttl: bool = True, ttl: int = DEFA Returns: Optional[Any]: The cached result, or None if the key does not exist. """ - client = Cache.get_client() - cached_result = client.get(content_hash) - if cached_result is not None: - if reset_ttl: - client.expire(content_hash, ttl) - return json.loads(cached_result) + if content_hash: + client = Cache.get_client() + cached_result = client.get(content_hash) + if cached_result is not None: + if reset_ttl: + client.expire(content_hash, ttl) + return json.loads(cached_result) return None @staticmethod diff --git a/lib/model/model.py b/lib/model/model.py index 61e4308..d7c6ee4 100644 --- a/lib/model/model.py +++ b/lib/model/model.py @@ -40,6 +40,16 @@ def get_tempfile(self) -> Any: def process(self, messages: Union[List[schemas.Message], schemas.Message]) -> List[schemas.Message]: return [] + def get_response(self, message: schemas.Message) -> schemas.GenericItem: + """ + Perform a lookup on the cache for a message, and if found, return that cached value. + """ + result = Cache.get_cached_result(message.body.content_hash) + if not result: + result = self.process(message) + Cache.set_cached_result(message.body.content_hash, message.body.result) + return result + def respond(self, messages: Union[List[schemas.Message], schemas.Message]) -> List[schemas.Message]: """ Force messages as list of messages in case we get a singular item. Then, run fingerprint routine. @@ -47,12 +57,7 @@ def respond(self, messages: Union[List[schemas.Message], schemas.Message]) -> Li if not isinstance(messages, list): messages = [messages] for message in messages: - existing = Cache.get_cached_result(message.body.content_hash) - if existing: - message.body.result = existing - else: - message.body.result = self.process(message) - Cache.set_cached_result(message.body.content_hash, message.body.result) + message.body.result = self.get_response(message) return messages @classmethod