# app/modules/catalog/schemas/catalog.py
"""
Pydantic schemas for catalog browsing operations.

These schemas are for the public storefront catalog API.
For store product management, see the products module.
"""

from datetime import datetime

from pydantic import BaseModel, ConfigDict

from app.modules.inventory.schemas import InventoryLocationResponse  # IMPORT-002
from app.modules.marketplace.schemas import MarketplaceProductResponse  # IMPORT-002


class ProductResponse(BaseModel):
    """Response model for a product in the catalog."""

    model_config = ConfigDict(from_attributes=True)

    id: int
    store_id: int
    marketplace_product: MarketplaceProductResponse
    store_sku: str | None
    price: float | None
    sale_price: float | None
    currency: str | None
    availability: str | None
    condition: str | None
    is_featured: bool
    is_active: bool
    display_order: int
    min_quantity: int
    max_quantity: int | None
    created_at: datetime
    updated_at: datetime

    # Include inventory summary
    total_inventory: int | None = None
    available_inventory: int | None = None


class ProductDetailResponse(ProductResponse):
    """Product with full inventory details."""

    inventory_locations: list[InventoryLocationResponse] = []


class ProductListResponse(BaseModel):
    """Paginated list of products."""

    products: list[ProductResponse]
    total: int
    skip: int
    limit: int
