Skip to content

Commit dd2864b

Browse files
make GetChunksResponse model more robust
Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>
1 parent 510b0a3 commit dd2864b

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

src/databricks/sql/backend/sea/models/responses.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
These models define the structures used in SEA API responses.
55
"""
66

7-
from typing import Dict, Any, List
7+
from typing import Dict, Any, List, Optional
88
from dataclasses import dataclass
99

1010
from databricks.sql.backend.types import CommandState
@@ -160,32 +160,26 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateSessionResponse":
160160
class GetChunksResponse:
161161
"""Response from getting chunks for a statement."""
162162

163-
statement_id: str
164-
external_links: List[ExternalLink]
163+
data: Optional[List[List[Any]]] = None
164+
external_links: Optional[List[ExternalLink]] = None
165+
byte_count: Optional[int] = None
166+
chunk_index: Optional[int] = None
167+
next_chunk_index: Optional[int] = None
168+
next_chunk_internal_link: Optional[str] = None
169+
row_count: Optional[int] = None
170+
row_offset: Optional[int] = None
165171

166172
@classmethod
167173
def from_dict(cls, data: Dict[str, Any]) -> "GetChunksResponse":
168174
"""Create a GetChunksResponse from a dictionary."""
169-
external_links = []
170-
if "external_links" in data:
171-
for link_data in data["external_links"]:
172-
external_links.append(
173-
ExternalLink(
174-
external_link=link_data.get("external_link", ""),
175-
expiration=link_data.get("expiration", ""),
176-
chunk_index=link_data.get("chunk_index", 0),
177-
byte_count=link_data.get("byte_count", 0),
178-
row_count=link_data.get("row_count", 0),
179-
row_offset=link_data.get("row_offset", 0),
180-
next_chunk_index=link_data.get("next_chunk_index"),
181-
next_chunk_internal_link=link_data.get(
182-
"next_chunk_internal_link"
183-
),
184-
http_headers=link_data.get("http_headers"),
185-
)
186-
)
187-
175+
result = _parse_result({"result": data})
188176
return cls(
189-
statement_id=data.get("statement_id", ""),
190-
external_links=external_links,
177+
data=result.data,
178+
external_links=result.external_links,
179+
byte_count=result.byte_count,
180+
chunk_index=result.chunk_index,
181+
next_chunk_index=result.next_chunk_index,
182+
next_chunk_internal_link=result.next_chunk_internal_link,
183+
row_count=result.row_count,
184+
row_offset=result.row_offset,
191185
)

0 commit comments

Comments
 (0)