from pydantic import BaseModel from datetime import datetime from typing import Optional, List class SpeciesBase(BaseModel): scientific_name: str common_name: Optional[str] = None genus: Optional[str] = None family: Optional[str] = None class SpeciesCreate(SpeciesBase): pass class SpeciesUpdate(BaseModel): scientific_name: Optional[str] = None common_name: Optional[str] = None genus: Optional[str] = None family: Optional[str] = None class SpeciesResponse(SpeciesBase): id: int created_at: datetime image_count: int = 0 class Config: from_attributes = True class SpeciesListResponse(BaseModel): items: List[SpeciesResponse] total: int page: int page_size: int pages: int class SpeciesImportResponse(BaseModel): imported: int skipped: int errors: List[str]