diff --git a/main.py b/main.py index 2c60dfc..818e419 100644 --- a/main.py +++ b/main.py @@ -340,10 +340,10 @@ class ClientInfo(BaseModel): class User(BaseModel): User_Name: str = Field(..., min_length=1, max_length=120) - MobileNo: str = Field(..., min_length=1, max_length=40) + MobileNo: str = Field(..., min_length=6, max_length=40) MobileNoOrder: int = Field(..., ge=1, le=999) - Email: EmailStr - Type: str = Field("U", min_length=1, max_length=2) + Email: Optional[EmailStr] + Type: str = Field("U", min_length=1, max_length=1) UserNo: int = Field(..., ge=1, le=999) Instructions: str | None = Field(None, max_length=500) CallOrder: int = Field(0, ge=0, le=999) @@ -601,14 +601,33 @@ def _update_client_in_db_from_data(client_id: int, keyrec: KeyRecord, data: dict updates: dict[str, object] = {} def set_text(field_name: str, column: str): + """ + PATCH logic: + * field missing → ignore + * field present and null → clear (set to "") + * field present and "" → clear (set to "") + * field present and "text" → update + """ + + # If field is missing in request, ignore. if field_name not in data: return + val = data[field_name] + + # null means clear if val is None: + updates[column] = "" return - sval = str(val).strip() - if not sval: + + sval = str(val) + + # empty string means clear + if sval.strip() == "": + updates[column] = "" return + + # normal update updates[column] = sval def set_int(field_name: str, column: str):