# backend/schemas.py
from pydantic import BaseModel, Field
from typing import Optional

# Schemat dla zagnieżdżonego obiektu modelu
class ModelInfo(BaseModel):
    model_id: int
    name: str

    class Config:
        orm_mode = True

# Schemat używany do tworzenia nowego produktu
class ProductCreate(BaseModel):
    name: str
    model_id: int
    price_tax_included: float = 0.0
    quantity: int = 0
    is_active: bool = True
    reference_code: Optional[str] = None

# Schemat używany do aktualizacji istniejącego produktu
class ProductUpdate(BaseModel):
    name: Optional[str] = None
    model_id: Optional[int] = None
    price_tax_included: Optional[float] = None
    quantity: Optional[int] = None
    is_active: Optional[bool] = None
    reference_code: Optional[str] = None

# Schemat do wyświetlania pełnych informacji o produkcie
class ProductInfo(BaseModel):
    product_id: int
    name: str
    is_active: bool
    price_tax_included: Optional[float]
    quantity: int
    reference_code: Optional[str]
    model: ModelInfo

    class Config:
        orm_mode = True