Skip to content

Commit e3cef5c

Browse files
add GetChunksResponse
Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>
1 parent d33e5fd commit e3cef5c

File tree

3 files changed

+38
-26
lines changed

3 files changed

+38
-26
lines changed

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

Lines changed: 36 additions & 1 deletion
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
7+
from typing import Dict, Any, List
88
from dataclasses import dataclass
99

1010
from databricks.sql.backend.types import CommandState
@@ -154,3 +154,38 @@ class CreateSessionResponse:
154154
def from_dict(cls, data: Dict[str, Any]) -> "CreateSessionResponse":
155155
"""Create a CreateSessionResponse from a dictionary."""
156156
return cls(session_id=data.get("session_id", ""))
157+
158+
159+
@dataclass
160+
class GetChunksResponse:
161+
"""Response from getting chunks for a statement."""
162+
163+
statement_id: str
164+
external_links: List[ExternalLink]
165+
166+
@classmethod
167+
def from_dict(cls, data: Dict[str, Any]) -> "GetChunksResponse":
168+
"""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+
188+
return cls(
189+
statement_id=data.get("statement_id", ""),
190+
external_links=external_links,
191+
)

tests/unit/test_sea_backend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"""
77

88
import pytest
9-
from unittest.mock import patch, MagicMock
9+
from unittest.mock import Mock, patch, MagicMock
1010

1111
from databricks.sql.backend.sea.backend import (
1212
SeaDatabricksClient,

tests/unit/test_sea_result_set.py

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import pytest
6+
import unittest
67
from unittest.mock import patch, MagicMock, Mock
78

89
from databricks.sql.result_set import SeaResultSet
@@ -39,30 +40,6 @@ def execute_response(self):
3940
mock_response.is_staging_operation = False
4041
return mock_response
4142

42-
# Create a mock CommandId
43-
self.mock_command_id = MagicMock()
44-
self.mock_command_id.to_sea_statement_id.return_value = "test-statement-id"
45-
46-
# Create a mock ExecuteResponse for inline data
47-
self.mock_execute_response_inline = ExecuteResponse(
48-
command_id=self.mock_command_id,
49-
status=CommandState.SUCCEEDED,
50-
description=self.sample_description,
51-
has_been_closed_server_side=False,
52-
lz4_compressed=False,
53-
is_staging_operation=False,
54-
)
55-
56-
# Create a mock ExecuteResponse for error
57-
self.mock_execute_response_error = ExecuteResponse(
58-
command_id=self.mock_command_id,
59-
status=CommandState.FAILED,
60-
description=None,
61-
has_been_closed_server_side=False,
62-
lz4_compressed=False,
63-
is_staging_operation=False,
64-
)
65-
6643
def test_init_with_inline_data(self):
6744
"""Test initialization with inline data."""
6845
# Create mock result data and manifest

0 commit comments

Comments
 (0)