bgg_api/src/classes/boardgame_classes.py
2024-08-02 10:37:47 +02:00

46 lines
No EOL
1.3 KiB
Python

from pydantic import BaseModel, HttpUrl
from datetime import date
from enum import Enum
class BoardgameType(Enum):
BOARDGAME = 'boardgame'
BOARDGAMEEXPANSION = 'boardgameexpansion'
COLLECTIONBOARDGAME = 'collectionboardgame'
COLLECTIONBOARDGAMEEXPANSION = 'collectionboardgameexpansion'
WISHLISTBOARDGAME = 'wishlistboardgame'
WISHLISTBOARDGAMEEXPANSION = 'wishlistboardgameexpansion'
class BoardGame(BaseModel):
id: int
name: str
description: str
image_url : HttpUrl
thumbnail_url : HttpUrl
year_published: int
min_players: int
max_players: int
min_playing_time: int
max_playing_time: int
min_age: int
all_expansion_ids: list[int]
type: BoardgameType = BoardgameType.BOARDGAME
class BoardGameExpansion(BoardGame):
type: BoardgameType = BoardgameType.BOARDGAMEEXPANSION
class OwnedBoardGame(BoardGame):
price_paid: float
acquisition_date: date
acquired_from: str
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAME
class OwnedBoardGameExpansion(OwnedBoardGame):
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAMEEXPANSION
class WishlistBoardGame(BoardGame):
wishlist_priority: int
type: BoardgameType = BoardgameType.WISHLISTBOARDGAME
class WishlistBoardGameExpansion(WishlistBoardGame):
type: BoardgameType = BoardgameType.WISHLISTBOARDGAMEEXPANSION