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-02 10:37:47 +02:00
|
|
|
WISHLISTBOARDGAMEEXPANSION = 'wishlistboardgameexpansion'
|
2024-08-01 12:05:51 +02:00
|
|
|
|
2024-07-25 18:01:51 +02:00
|
|
|
|
|
|
|
|
class BoardGame(BaseModel):
|
2024-07-25 22:01:25 +02:00
|
|
|
id: int
|
|
|
|
|
name: str
|
|
|
|
|
description: str
|
2024-07-26 10:45:29 +02:00
|
|
|
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
|
2024-07-25 22:07:14 +02:00
|
|
|
all_expansion_ids: list[int]
|
2024-08-01 12:16:50 +02:00
|
|
|
type: BoardgameType = BoardgameType.BOARDGAME
|
2024-07-25 22:07:14 +02:00
|
|
|
|
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
|
|
|
|
2024-08-02 10:37:47 +02:00
|
|
|
class OwnedBoardGame(BoardGame):
|
2024-08-01 11:48:29 +02:00
|
|
|
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
|
|
|
|
2024-08-02 10:37:47 +02:00
|
|
|
class OwnedBoardGameExpansion(OwnedBoardGame):
|
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
|
2024-08-02 10:37:47 +02:00
|
|
|
type: BoardgameType = BoardgameType.WISHLISTBOARDGAME
|
|
|
|
|
|
|
|
|
|
class WishlistBoardGameExpansion(WishlistBoardGame):
|
|
|
|
|
type: BoardgameType = BoardgameType.WISHLISTBOARDGAMEEXPANSION
|