bgg_api/src/classes/boardgame_classes.py

66 lines
2 KiB
Python
Raw Normal View History

2024-08-01 11:48:29 +02:00
from datetime import date
2024-08-01 12:05:51 +02:00
from enum import Enum
from sqlmodel import Field, SQLModel
2024-08-01 12:05:51 +02:00
class BoardgameType(Enum):
2024-08-01 12:16:50 +02:00
BOARDGAME = 'boardgame'
BOARDGAMEEXPANSION = 'boardgameexpansion'
OWNEDBOARDGAME = 'ownedboardgame'
OWNEDBOARDGAMEEXPANSION = 'ownedboardgameexpansion'
2024-08-01 12:16:50 +02:00
WISHLISTBOARDGAME = 'wishlistboardgame'
WISHLISTBOARDGAMEEXPANSION = 'wishlistboardgameexpansion'
2024-08-01 12:05:51 +02:00
class BoardGameBase(SQLModel):
2024-08-03 14:18:54 +02:00
name: str
description: str
2024-08-08 16:50:42 +02:00
weight: float
2024-08-03 14:18:54 +02:00
image_url : str
thumbnail_url : str
year_published: int
min_players: int
max_players: int
min_playing_time: int
max_playing_time: int
min_age: int
model_config = {
'validate_assignment':True
}
2024-08-03 14:18:54 +02:00
class OwnedBoardGameBase(BoardGameBase):
2024-08-01 11:48:29 +02:00
price_paid: float
acquisition_date: date
acquired_from: str
class WishlistBoardGameBase(BoardGameBase):
wishlist_priority: int
class BoardGame(BoardGameBase, table=True):
id: int = Field(primary_key=True)
type: BoardgameType = BoardgameType.BOARDGAME
class BoardGameExpansion(BoardGameBase, table=True):
id: int = Field(primary_key=True)
expansion_for: int = Field(default=None, foreign_key="boardgame.id")
type: BoardgameType = BoardgameType.BOARDGAMEEXPANSION
class OwnedBoardGame(OwnedBoardGameBase, table=True):
id: int = Field(primary_key=True)
type: BoardgameType = BoardgameType.OWNEDBOARDGAME
2024-08-01 11:48:29 +02:00
class OwnedBoardGameExpansion(OwnedBoardGameBase, table=True):
id: int = Field(primary_key=True)
expansion_for: int = Field(default=None, foreign_key="boardgame.id")
type: BoardgameType = BoardgameType.OWNEDBOARDGAMEEXPANSION
2024-08-01 11:48:29 +02:00
class WishlistBoardGame(WishlistBoardGameBase, table=True):
id: int = Field(primary_key=True)
type: BoardgameType = BoardgameType.WISHLISTBOARDGAME
class WishlistBoardGameExpansion(WishlistBoardGameBase, table=True):
id: int = Field(primary_key=True)
expansion_for: int = Field(default=None, foreign_key="boardgame.id")
type: BoardgameType = BoardgameType.WISHLISTBOARDGAMEEXPANSION