"""
Request schema definitions.
"""

from typing import Optional
from pydantic import BaseModel, Field


class PaginationRequest(BaseModel):
    """Base pagination request schema."""
    
    page: int = Field(1, ge=1, description="Page number (1-indexed)")
    per_page: int = Field(20, ge=1, le=100, description="Items per page")


class SearchRequest(BaseModel):
    """Base search request schema."""
    
    query: str = Field(..., min_length=1, max_length=255, description="Search query")
    fields: Optional[list[str]] = Field(None, description="Fields to search in")


class FilterRequest(BaseModel):
    """Base filter request schema."""
    
    field: str = Field(..., description="Field to filter by")
    operator: str = Field("eq", description="Filter operator (eq, ne, gt, lt, gte, lte, in, like)")
    value: str = Field(..., description="Filter value")


class SortRequest(BaseModel):
    """Base sort request schema."""
    
    field: str = Field(..., description="Field to sort by")
    direction: str = Field("asc", pattern="^(asc|desc)$", description="Sort direction")
