fix(db): prevent silent failures in sql_select

- Modify sql_select to return False on database exceptions instead of an empty result
- Update V3 Search endpoint to catch False results and return a 500 Internal Server Error
- Enhances error visibility for frontend developers and prevents misleading 200 OK responses during SQL errors
This commit is contained in:
Scott Idem
2026-01-21 19:49:58 -05:00
parent bdd1bd2ba2
commit e8322b4b1a
2 changed files with 6 additions and 1 deletions

View File

@@ -312,7 +312,7 @@ def sql_select(
except Exception as e:
log.error(f"SQL Fetch Error: {e}")
set_last_sql_error(e)
return [] if as_list else None
return False
count = len(rows)

View File

@@ -363,6 +363,11 @@ async def search_obj_li(
as_list=True,
)
if sql_result is False:
# Standardized rich error bubbling
db_err = format_db_error(get_last_sql_error())
return mk_resp(data=False, status_code=500, response=response, status_message="Search failed due to database error.", details=db_err.dict())
if sql_result:
resp_data_li = [base_name(**record).dict(by_alias=serialization.by_alias, exclude_unset=serialization.exclude_unset, exclude_defaults=serialization.exclude_defaults, exclude_none=serialization.exclude_none) for record in sql_result]
return mk_resp(data=resp_data_li, response=response)