"""Handler that writes files to the filesystem.""" from pathlib import Path import aiofiles from .base_handler import BaseHandler import json class FilesystemHandler(BaseHandler): """ Handler that writes files to the filesystem. """ def __init__(self, output_dir: str, **kwargs): """ Initializes the FileSystemHandler with the specified output directory. Args: output_dir (str): The directory where files will be written. **kwargs: Additional keyword arguments for the BaseHandler. """ super().__init__(**kwargs) self.output_dir = Path(output_dir) # Ensure the target directory exists self.output_dir.mkdir(parents=True, exist_ok=True) self.logger.info(f"Output directory set to {self.output_dir}") async def _write_entry(self, entry: dict, uid: str) -> bool: """ Asynchronously writes a single entry to the filesystem. Args: entry (dict): The entry to write (will be JSON-encoded). uid (str): The unique identifier for the entry. Returns: bool: True if the entry was written successfully, False otherwise. """ try: file_path = self.output_dir / f"{uid}.json" async with aiofiles.open(file_path, 'w') as f: await f.write(json.dumps(entry)) return True except IOError as e: self.logger.error(f"Error writing entry {uid}: {e}") return False