refactor: add service layer architecture with Pydantic validation
- 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
This commit is contained in:
28
src/tryton_mcp/services/base.py
Normal file
28
src/tryton_mcp/services/base.py
Normal file
@@ -0,0 +1,28 @@
|
||||
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
|
||||
Reference in New Issue
Block a user