94 lines
2.0 KiB
Python
94 lines
2.0 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional
|
|
|
|
|
|
class PatchCreate(BaseModel):
|
|
name: str
|
|
location: Optional[str] = None
|
|
status: Optional[str] = ""
|
|
|
|
|
|
class PatchUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
location: Optional[str] = None
|
|
status: Optional[str] = None
|
|
|
|
|
|
class CropCreate(BaseModel):
|
|
patch_id: int
|
|
name: str
|
|
variety: Optional[str] = None
|
|
date: Optional[str] = None
|
|
|
|
|
|
class CropUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
variety: Optional[str] = None
|
|
date: Optional[str] = None
|
|
|
|
|
|
class CropResponse(CropCreate):
|
|
id: int
|
|
images: Optional[list[str]] = None
|
|
|
|
model_config = {
|
|
"from_attributes": True
|
|
}
|
|
|
|
@classmethod
|
|
def from_orm(cls, obj):
|
|
return cls(
|
|
id=obj.id,
|
|
patch_id=obj.patch_id,
|
|
name=obj.name,
|
|
variety=obj.variety,
|
|
date=obj.date.strftime("%Y-%m-%d") if obj.date else None,
|
|
)
|
|
|
|
|
|
class PatchResponse(PatchCreate):
|
|
id: int
|
|
crop: Optional[CropResponse] = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class RecordCreate(BaseModel):
|
|
crop_id: int
|
|
type: Optional[str] = None
|
|
date: Optional[str] = None
|
|
content: Optional[str] = None
|
|
images: Optional[list[str]] = None
|
|
videos: Optional[list[str]] = None
|
|
stage: Optional[str] = None
|
|
|
|
|
|
class RecordUpdate(BaseModel):
|
|
type: Optional[str] = None
|
|
date: Optional[str] = None
|
|
content: Optional[str] = None
|
|
images: Optional[list[str]] = None
|
|
videos: Optional[list[str]] = None
|
|
stage: Optional[str] = None
|
|
|
|
|
|
class RecordResponse(RecordCreate):
|
|
id: int
|
|
|
|
model_config = {
|
|
"from_attributes": True
|
|
}
|
|
|
|
@classmethod
|
|
def from_orm(cls, obj):
|
|
return cls(
|
|
id=obj.id,
|
|
crop_id=obj.crop_id,
|
|
type=obj.type,
|
|
date=obj.date.strftime("%Y-%m-%d") if obj.date else None,
|
|
content=obj.content,
|
|
images=obj.images,
|
|
videos=obj.videos,
|
|
stage=obj.stage,
|
|
)
|