Spaces:
Build error
Build error
| """ | |
| In-memory implementation of the ToolRepository interface. | |
| """ | |
| from typing import List, Optional, Dict | |
| from uuid import UUID | |
| import asyncio | |
| from src.core.entities.tool import Tool, ToolType | |
| from src.core.interfaces.tool_repository import ToolRepository | |
| class InMemoryToolRepository(ToolRepository): | |
| def __init__(self): | |
| self._tools: Dict[UUID, Tool] = {} | |
| self._tools_by_name: Dict[str, Tool] = {} | |
| async def save(self, tool: Tool) -> Tool: | |
| self._tools[tool.id] = tool | |
| self._tools_by_name[tool.name] = tool | |
| return tool | |
| async def find_by_id(self, tool_id: UUID) -> Optional[Tool]: | |
| return self._tools.get(tool_id) | |
| async def find_by_name(self, name: str) -> Optional[Tool]: | |
| return self._tools_by_name.get(name) | |
| async def find_by_type(self, tool_type: ToolType) -> List[Tool]: | |
| return [tool for tool in self._tools.values() if tool.tool_type == tool_type] | |
| async def delete(self, tool_id: UUID) -> bool: | |
| tool = self._tools.get(tool_id) | |
| if tool: | |
| del self._tools[tool_id] | |
| if tool.name in self._tools_by_name: | |
| del self._tools_by_name[tool.name] | |
| return True | |
| return False | |
| async def get_statistics(self) -> dict: | |
| return { | |
| "total_tools": len(self._tools), | |
| "enabled_tools": len([t for t in self._tools.values() if t.is_enabled]), | |
| } |