39 lines
907 B
Python
39 lines
907 B
Python
from pydantic import BaseModel, ConfigDict
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
|
|
# Base schema with common attributes
|
|
class CardBase(BaseModel):
|
|
name: str
|
|
rarity: str
|
|
set_name: str
|
|
price: float
|
|
quantity: int = 0
|
|
|
|
# Schema for creating a new card
|
|
class CardCreate(CardBase):
|
|
pass
|
|
|
|
# Schema for updating a card
|
|
class CardUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
rarity: Optional[str] = None
|
|
set_name: Optional[str] = None
|
|
price: Optional[float] = None
|
|
quantity: Optional[int] = None
|
|
|
|
# Schema for reading a card (includes id and relationships)
|
|
class Card(CardBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
orders: List["Order"] = []
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
# Schema for listing cards
|
|
class CardList(BaseModel):
|
|
cards: List[Card]
|
|
total: int
|
|
page: int
|
|
limit: int |