From 499bfe5971b774057b3ab4ee29bcf5623a55f523 Mon Sep 17 00:00:00 2001 From: dylan <12473240+dlmw@users.noreply.github.com> Date: Sat, 12 Apr 2025 01:18:07 +0200 Subject: [PATCH] Create requests/responses models from OpenAPI JSON file --- models/__init__.py | 0 models/errors.py | 15 +++++++++++++++ models/requests.py | 17 +++++++++++++++++ models/responses.py | 23 +++++++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 models/__init__.py create mode 100644 models/errors.py create mode 100644 models/requests.py create mode 100644 models/responses.py 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