from pydantic import BaseModel, Field
from typing import Optional, Literal
class Search(BaseModel):
"""
Model for search parameters when querying Unsplash photos.
Attributes:
query: Search terms to find specific photos
page: Page number for pagination
per_page: Number of photos to return per page
order_by: How to sort the returned photos
"""
query: Optional[str] = Field(
default="nature",
description="Search terms to find specific photos (e.g., 'mountain', 'ocean sunset', 'city skyline')",
example="forest",
)
page: Optional[int] = Field(
default=1,
description="Page number for pagination (starts at 1)",
ge=1,
example=1,
)
per_page: Optional[int] = Field(
default=10,
description="Number of photos to return per page (max: 30)",
ge=1,
le=30,
example=10,
)
order_by: Optional[Literal["relevant", "latest"]] = Field(
default="relevant",
description="How to sort the photos: 'relevant' for best match to query, 'latest' for most recent",
example="relevant",
)