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