sql first refactor
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
"""asyncpg Record → JSON-serializovatelný dict."""
|
||||
"""asyncpg Record → JSON-serializovatelný dict + helper pro jsonb z fn_*."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from datetime import date, datetime, timezone
|
||||
from decimal import Decimal
|
||||
from typing import Any
|
||||
@@ -33,3 +34,17 @@ def record_to_dict(r: asyncpg.Record) -> dict[str, Any]:
|
||||
else:
|
||||
out[k] = str(v)
|
||||
return out
|
||||
|
||||
|
||||
async def fetch_json(conn: asyncpg.Connection, query: str, *args: Any) -> Any:
|
||||
"""fetchval pro dotazy vracející jsonb (např. select ems.fn_*(...))."""
|
||||
v = await conn.fetchval(query, *args)
|
||||
if v is None:
|
||||
return None
|
||||
if isinstance(v, (dict, list)):
|
||||
return v
|
||||
if isinstance(v, (bytes, memoryview)):
|
||||
return json.loads(bytes(v).decode("utf-8"))
|
||||
if isinstance(v, str):
|
||||
return json.loads(v)
|
||||
return v
|
||||
|
||||
Reference in New Issue
Block a user