Files
patch-service/schemas/patch.py
2026-09-09 18:42:37 +08:00

93 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
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,
)