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