49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
import uuid
|
|
|
|
games = [] # In-memory storage
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/sport")
|
|
async def save_game(game: Game):
|
|
"""Save a new game to the database"""
|
|
if request.method != "POST":
|
|
raise HTTPException(status_code=405, detail="Method Not Allowed")
|
|
|
|
game.id = str(uuid.uuid4())
|
|
games.append(game.dict())
|
|
|
|
return {
|
|
"method": "POST",
|
|
"_verb": "post",
|
|
"message": "Game saved successfully",
|
|
"game_id": game.id
|
|
}
|
|
|
|
@router.get("/sport")
|
|
async def get_games():
|
|
"""Fetch all games from the database"""
|
|
return {
|
|
"method": "GET",
|
|
"_verb": "get",
|
|
"games": [game for game in games]
|
|
}
|
|
```
|
|
|
|
This code provides:
|
|
|
|
1. A `Game` Pydantic model to define the schema for game data.
|
|
2. A `@router.post("/sport")` endpoint to save a new game to the in-memory `games` list.
|
|
3. A `@router.get("/sport")` endpoint to fetch all games from the `games` list.
|
|
|
|
The `save_game` endpoint:
|
|
- Checks if the request method is POST, raising 405 Method Not Allowed if not.
|
|
- Generates a new UUID as the game id.
|
|
- Appends the game data to the `games` list.
|
|
- Returns a success response with the saved game id.
|
|
|
|
The `get_games` endpoint:
|
|
- Returns all games in the `games` list.
|
|
|
|
Note: This is an in-memory implementation for demo purposes. In a real application, you would use a persistent database instead of a Python list. |