- Add services layer (PartyService, ScheduleService, ProductService, ServiceCenterService) - Add ServiceProvider for dependency injection - Add Pydantic input validation on all MCP tools - Add thread-safety to TrytonSettings with double-checked locking - Update tests to mock ServiceProvider instead of direct client calls - Add pydantic dependency
29 lines
709 B
Python
29 lines
709 B
Python
from typing import Any, Dict, List, Optional
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class TrytonResponse:
|
|
success: bool
|
|
data: Any = None
|
|
error: Optional[str] = None
|
|
|
|
@property
|
|
def is_error(self) -> bool:
|
|
return not self.success
|
|
|
|
|
|
class BaseService:
|
|
def __init__(self, client: Any):
|
|
self._client = client
|
|
|
|
def call(self, method: str, args: List[Any]) -> TrytonResponse:
|
|
try:
|
|
response = self._client.call(method, args)
|
|
return TrytonResponse(success=True, data=response)
|
|
except Exception as e:
|
|
return TrytonResponse(success=False, error=str(e))
|
|
|
|
def _get_client(self) -> Any:
|
|
return self._client
|