fix(api): resolve SQL unpacking crash and Event serialization errors

- Refactor SQL helpers in lib_sql_search to return empty tuples instead of False
- Add Pydantic pre-validators to Event_Base to coerce time objects to strings
- Improves API stability for Event searches and filtered lists
This commit is contained in:
Scott Idem
2026-01-20 15:49:13 -05:00
parent dc7732ab5f
commit e16fbaa34b
2 changed files with 30 additions and 24 deletions

View File

@@ -70,8 +70,8 @@ class Event_Base(BaseModel):
recurring: Optional[bool]
recurring_pattern: Optional[str]
recurring_start_time: Optional[datetime.time]
recurring_end_time: Optional[datetime.time]
recurring_start_time: Optional[str]
recurring_end_time: Optional[str]
recurring_text: Optional[str]
weekday_sunday: Optional[bool]
@@ -281,6 +281,12 @@ class Event_Base(BaseModel):
return v.astimezone(pytz.UTC).isoformat()
else: return v
@validator('recurring_start_time', 'recurring_end_time', pre=True, always=True)
def time_to_str(cls, v):
if isinstance(v, (datetime.time, datetime.timedelta)):
return str(v)
return v
class Config:
underscore_attrs_are_private = True
allow_population_by_field_name = True
@@ -340,8 +346,8 @@ class Event_Meeting_Flat_Base(BaseModel):
recurring: Optional[bool]
recurring_pattern: Optional[str]
recurring_start_time: Optional[datetime.time]
recurring_end_time: Optional[datetime.time]
recurring_start_time: Optional[str]
recurring_end_time: Optional[str]
recurring_text: Optional[str]
weekday_sunday: Optional[bool]