from state.redis import redis import logging import math # Create a logger instance logger = logging.getLogger("state.scan") async def get_all_pattern(uid): pattern = f"removed:{uid}:*" # Create a list to hold the values texts = [] # Use scan_iter to find all keys matching the pattern async for key in redis.scan_iter(pattern): try: # Fetch the value for each key value = await redis.get(key) if value: texts.append(value.decode("utf-8")) except Exception as e: logger.error(f"Error fetching key {key}: {e}") return texts async def get_average_pattern(pattern): scores = [] toxic_score = 0 try: async for key in redis.scan_iter(pattern): scr = await redis.get(key) # Ensure scr is not None before converting to int if scr is not None: try: score = int(scr) # Convert to integer print(score) scores.append(score) except ValueError: logger.warning(f"Value for key {key} is not an integer: {scr}") logger.debug(f"Found {len(scores)} messages") toxic_score = math.floor(sum(scores) / len(scores)) if scores else 0 except Exception as e: logger.error(f"Error while calculating average: {e}") finally: return toxic_score