Added clearing of fields in PATCH request. Changed e-mail to optional in PATCH User data.

This commit is contained in:
Anders Knutsen 2025-12-03 16:45:32 +01:00
parent f254e4028c
commit 3cdbd8d385
1 changed files with 24 additions and 5 deletions

29
main.py
View File

@ -340,10 +340,10 @@ class ClientInfo(BaseModel):
class User(BaseModel): class User(BaseModel):
User_Name: str = Field(..., min_length=1, max_length=120) 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) MobileNoOrder: int = Field(..., ge=1, le=999)
Email: EmailStr Email: Optional[EmailStr]
Type: str = Field("U", min_length=1, max_length=2) Type: str = Field("U", min_length=1, max_length=1)
UserNo: int = Field(..., ge=1, le=999) UserNo: int = Field(..., ge=1, le=999)
Instructions: str | None = Field(None, max_length=500) Instructions: str | None = Field(None, max_length=500)
CallOrder: int = Field(0, ge=0, le=999) 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] = {} updates: dict[str, object] = {}
def set_text(field_name: str, column: str): 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: if field_name not in data:
return return
val = data[field_name] val = data[field_name]
# null means clear
if val is None: if val is None:
updates[column] = ""
return return
sval = str(val).strip()
if not sval: sval = str(val)
# empty string means clear
if sval.strip() == "":
updates[column] = ""
return return
# normal update
updates[column] = sval updates[column] = sval
def set_int(field_name: str, column: str): def set_int(field_name: str, column: str):