"""{{ feature_name | capitalize }} schemas.

Define Pydantic schemas for request/response validation.

Conventions:
    - *Create: Schema for creating new resources (POST body)
    - *Update: Schema for updating resources (PUT/PATCH body)
    - *Public: Schema for public API responses
    - *Internal: Schema for internal use only
"""

from pydantic import BaseModel, ConfigDict


class {{ feature_name | capitalize }}Base(BaseModel):
    """Base schema with common fields."""

    # Define common fields here
    pass


class {{ feature_name | capitalize }}Create({{ feature_name | capitalize }}Base):
    """Schema for creating a new {{ feature_name }}."""

    pass


class {{ feature_name | capitalize }}Update(BaseModel):
    """Schema for updating a {{ feature_name }}.

    All fields are optional to support partial updates.
    """

    pass


class {{ feature_name | capitalize }}Public({{ feature_name | capitalize }}Base):
    """Schema for public API responses."""

    model_config = ConfigDict(from_attributes=True)

    id: int
