fix: json.loads JSONB overrides on GET — asyncpg has no codec registered
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 8s
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 8s
asyncpg returns JSONB columns as raw JSON strings when no type codec is configured (only pgvector is registered in _init_connection). The stored value is a correct JSONB array (jsonb_typeof=array confirmed), but asyncpg decodes it as str. Parse it explicitly in the GET handler so the frontend receives the correct Python list/dict. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
10
web/app.py
10
web/app.py
@@ -3057,8 +3057,16 @@ async def api_get_methodology(category: str):
|
||||
items = {}
|
||||
for key, default_val in defaults.items():
|
||||
if key in overrides:
|
||||
raw = overrides[key]["rule_value"]
|
||||
# asyncpg returns JSONB as a raw JSON string when no codec is registered.
|
||||
# Parse it back to a Python object so the frontend receives the correct type.
|
||||
if isinstance(raw, str):
|
||||
try:
|
||||
raw = json.loads(raw)
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
pass
|
||||
items[key] = {
|
||||
"value": overrides[key]["rule_value"],
|
||||
"value": raw,
|
||||
"is_override": True,
|
||||
"updated_at": overrides[key]["created_at"].isoformat() if overrides[key]["created_at"] else None,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user