from typing import Type from flask import Flask from common.utils.cache.base import CacheHandler class EveAICacheManager: """Cache manager with registration capabilities""" def __init__(self): self._regions = {} self._handlers = {} def init_app(self, app: Flask): """Initialize cache regions""" from common.utils.cache.regions import create_cache_regions self._regions = create_cache_regions(app) # Store regions in instance for region_name, region in self._regions.items(): setattr(self, f"{region_name}_region", region) # Initialize all registered handlers with their regions for handler_class, region_name in self._handlers.items(): region = self._regions[region_name] handler_instance = handler_class(region) handler_name = getattr(handler_class, 'handler_name', None) if handler_name: app.logger.debug(f"{handler_name} is registered") setattr(self, handler_name, handler_instance) app.logger.info('Cache regions initialized: ' + ', '.join(self._regions.keys())) def register_handler(self, handler_class: Type[CacheHandler], region: str): """Register a cache handler class with its region""" if not hasattr(handler_class, 'handler_name'): raise ValueError("Cache handler must define handler_name class attribute") self._handlers[handler_class] = region