47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class LearnerCreate(BaseModel):
|
|
phone: str = Field(min_length=6, max_length=32)
|
|
current_name: str = Field(min_length=1, max_length=64)
|
|
student_no: str | None = Field(default=None, max_length=64)
|
|
remark: str | None = None
|
|
|
|
|
|
class LearnerUpdate(BaseModel):
|
|
phone: str = Field(min_length=6, max_length=32)
|
|
current_name: str = Field(min_length=1, max_length=64)
|
|
student_no: str | None = Field(default=None, max_length=64)
|
|
status: str = Field(default="active", pattern="^(active|disabled|deleted)$")
|
|
remark: str | None = None
|
|
|
|
|
|
class LearnerOut(BaseModel):
|
|
id: int
|
|
phone: str
|
|
current_name: str
|
|
student_no: str | None
|
|
status: str
|
|
remark: str | None
|
|
certificate_count: int = 0
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class LearnerImportError(BaseModel):
|
|
row_no: int
|
|
message: str
|
|
|
|
|
|
class LearnerImportResult(BaseModel):
|
|
total_rows: int
|
|
created_rows: int
|
|
updated_rows: int
|
|
unchanged_rows: int
|
|
failed_rows: int
|
|
errors: list[LearnerImportError]
|