bgg_api/classes/boardgame_classes.py

42 lines
No EOL
1.2 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'
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 CollectionBoardGame(BoardGame):
price_paid: float
acquisition_date: date
acquired_from: str
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAME
class CollectionBoardGameExpansion(CollectionBoardGame):
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAMEEXPANSION
class WishlistBoardGame(BoardGame):
wishlist_priority: int
type: BoardgameType = BoardgameType.WISHLISTBOARDGAME