45 lines
864 B
Python
45 lines
864 B
Python
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]
|