diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/models/errors.py b/models/errors.py new file mode 100644 index 0000000..e8d99f5 --- /dev/null +++ b/models/errors.py @@ -0,0 +1,15 @@ +from dataclasses import dataclass, field + + +@dataclass +class ValidationError: + """Model for validation errors.""" + loc: list + msg: str + type: str + + +@dataclass +class HTTPValidationError: + """Model for HTTP validation errors.""" + detail: list[ValidationError] = field(default_factory=list) diff --git a/models/requests.py b/models/requests.py new file mode 100644 index 0000000..3bfebab --- /dev/null +++ b/models/requests.py @@ -0,0 +1,17 @@ +from dataclasses import dataclass +from typing import Literal +from uuid import UUID + + +@dataclass +class GameStartRequest: + """Request model for starting a new game.""" + player_name: str + + +@dataclass +class GameDecisionRequest: + """Request model for making a game decision.""" + decision: Literal["Accept", "Reject"] + session_id: UUID + client_id: UUID diff --git a/models/responses.py b/models/responses.py new file mode 100644 index 0000000..1a4bfec --- /dev/null +++ b/models/responses.py @@ -0,0 +1,23 @@ +from dataclasses import dataclass +from typing import Dict, Optional, Any +from uuid import UUID + + +@dataclass +class GameStartResponse: + """Response model for a new game started.""" + message: str + session_id: UUID + player_id: str + client_id: UUID + client_data: Dict[str, Any] + score: int + + +@dataclass +class GameDecisionResponse: + """Response model for a game decision result.""" + status: str + score: int + client_id: Optional[UUID] = None + client_data: Optional[Dict[str, Any]] = None