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