From 93fa2dd5ac71277d778886d13af0b63a62ba62e5 Mon Sep 17 00:00:00 2001 From: NoeBerdoz Date: Sat, 12 Apr 2025 10:00:19 +0200 Subject: [PATCH] refactor requests related dto with pydantic --- app.py | 5 ++--- dto/requests.py | 8 +++----- services/julius_baer_api_client.py | 10 ++++------ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app.py b/app.py index 7d4fec4..6a0f4c1 100644 --- a/app.py +++ b/app.py @@ -1,7 +1,6 @@ -from dotenv import load_dotenv from flask import Flask -from dto.requests import GameStartRequest +from dto.requests import GameStartRequestDTO from services.julius_baer_api_client import JuliusBaerApiClient app = Flask(__name__) @@ -14,7 +13,7 @@ def hello_world(): # put application's code here if __name__ == '__main__': jb_client = JuliusBaerApiClient() - game_start_request = GameStartRequest("Welch") + game_start_request = GameStartRequestDTO(player_name="Welch") res = jb_client.start_game(game_start_request) print(res) diff --git a/dto/requests.py b/dto/requests.py index 3bfebab..23091b5 100644 --- a/dto/requests.py +++ b/dto/requests.py @@ -1,16 +1,14 @@ -from dataclasses import dataclass +from pydantic import BaseModel from typing import Literal from uuid import UUID -@dataclass -class GameStartRequest: +class GameStartRequestDTO(BaseModel): """Request model for starting a new game.""" player_name: str -@dataclass -class GameDecisionRequest: +class GameDecisionRequestDTO(BaseModel): """Request model for making a game decision.""" decision: Literal["Accept", "Reject"] session_id: UUID diff --git a/services/julius_baer_api_client.py b/services/julius_baer_api_client.py index 264f2c8..3ba4926 100644 --- a/services/julius_baer_api_client.py +++ b/services/julius_baer_api_client.py @@ -1,9 +1,7 @@ -from typing import Dict, Any - import requests - import config -from dto.requests import GameStartRequest, GameDecisionRequest +from typing import Dict, Any +from dto.requests import GameStartRequestDTO, GameDecisionRequestDTO class JuliusBaerApiClient: @@ -18,7 +16,7 @@ class JuliusBaerApiClient: self.api_key = config.API_KEY self.api_team = config.API_TEAM - def start_game(self, game_start_request: GameStartRequest) -> Dict[str, Any]: + def start_game(self, game_start_request: GameStartRequestDTO) -> Dict[str, Any]: """ Start a new game session. @@ -47,7 +45,7 @@ class JuliusBaerApiClient: return data - def make_decision(self, game_decision_request: GameDecisionRequest) -> Dict[str, Any]: + def make_decision(self, game_decision_request: GameDecisionRequestDTO) -> Dict[str, Any]: """ Make a game decision (Accept or Reject).