from typing import Any, Optional from app.modules.cases.service import CaseService from core.plugin_system.facades import BaseFacade from core.plugin_system.permissions import PluginPermission class CasePluginFacade(BaseFacade): """ Facade for Case operations exposed to plugins. """ def __init__( self, service: CaseService, plugin_id: str, permissions: list[str] = None ): super().__init__(service, plugin_id, permissions) def get_case(self, case_id: str) -> Optional[dict[str, Any]]: """ Get safe case details. Requires: READ_CASE """ if not self._check_permission(PluginPermission.READ_CASE): return None try: # Assuming get_case exists on CaseService (we will verify) case = self._service.get_case(case_id) if not case: return None return { "id": case.id, "title": case.title, "status": case.status, "priority": case.priority, "created_at": case.created_at, } except Exception: return None