"""
Product request schema definitions.
"""

from typing import Optional
from pydantic import Field, BaseModel
from src.apps.products.schemas.common import ProductCreateSchema, ProductUpdateSchema
from src.core.utils.enums import ProductTypes


class ProductCreateRequest(ProductCreateSchema):
    """Request schema for creating a new product."""
    pass


class ProductUpdateRequest(ProductUpdateSchema):
    """Request schema for updating a product."""
    pass


class ProductFilterRequest(BaseModel):
    """Request schema for filtering products."""
    
    search: Optional[str] = Field(None, description="Search across name, sku, code, description")
    name: Optional[str] = Field(None, description="Filter by product name")
    sku: Optional[str] = Field(None, description="Filter by product SKU")
    code: Optional[str] = Field(None, description="Filter by product code")
    category_id: Optional[int] = Field(None, description="Filter by category ID")
    merchant_id: Optional[int] = Field(None, description="Filter by merchant ID")
    is_active: int = Field(0, description="Filter by active status (0=all, 1=active, -1=inactive)")
    is_new: int = Field(0, description="Filter by new status (0=all, 1=new, -1=not new)")
    is_purchase: int = Field(0, description="Filter by purchase status (0=all, 1=purchase, -1=not purchase)")
    is_sell: int = Field(0, description="Filter by sell status (0=all, 1=sell, -1=not sell)")
    min_price: Optional[float] = Field(None, ge=0, description="Minimum unit price filter")
    max_price: Optional[float] = Field(None, ge=0, description="Maximum unit price filter")
    item_type: Optional[str] = Field(None, description="Filter by item type: 'service' or 'product'")