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:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user