bgg_api/src/classes/boardgame_classes.py

42 lines
1.2 KiB
Python
Raw Normal View History

2024-07-25 22:01:25 +02:00
from pydantic import BaseModel, HttpUrl
2024-08-01 11:48:29 +02:00
from datetime import date
2024-08-01 12:05:51 +02:00
from enum import Enum
class BoardgameType(Enum):
2024-08-01 12:16:50 +02:00
BOARDGAME = 'boardgame'
BOARDGAMEEXPANSION = 'boardgameexpansion'
COLLECTIONBOARDGAME = 'collectionboardgame'
COLLECTIONBOARDGAMEEXPANSION = 'collectionboardgameexpansion'
WISHLISTBOARDGAME = 'wishlistboardgame'
2024-08-01 12:05:51 +02:00
class BoardGame(BaseModel):
2024-07-25 22:01:25 +02:00
id: int
name: str
description: str
image_url : HttpUrl
thumbnail_url : HttpUrl
2024-07-25 22:01:25 +02:00
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]
2024-08-01 12:16:50 +02:00
type: BoardgameType = BoardgameType.BOARDGAME
2024-07-25 17:27:27 +02:00
class BoardGameExpansion(BoardGame):
2024-08-01 12:16:50 +02:00
type: BoardgameType = BoardgameType.BOARDGAMEEXPANSION
2024-08-01 11:48:29 +02:00
class CollectionBoardGame(BoardGame):
price_paid: float
acquisition_date: date
acquired_from: str
2024-08-01 12:16:50 +02:00
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAME
2024-08-01 11:48:29 +02:00
class CollectionBoardGameExpansion(CollectionBoardGame):
2024-08-01 12:16:50 +02:00
type: BoardgameType = BoardgameType.COLLECTIONBOARDGAMEEXPANSION
2024-08-01 11:48:29 +02:00
class WishlistBoardGame(BoardGame):
2024-08-01 12:16:50 +02:00
wishlist_priority: int
type: BoardgameType = BoardgameType.WISHLISTBOARDGAME