mirror of
https://github.com/hanzo-ds/connect.git
synced 2026-10-30 20:31:24 +00:00
Imports read `datastore_connect`, distribution `datastore-connect`, so nothing has to import another product's name to talk to Hanzo Datastore. Cut from upstream 0.8.17 — the version this stack already ran — rather than from upstream HEAD, so it is a PURE RENAME with no behaviour change. Forking from HEAD would have dragged versions along with the name (connect alone jumped 0.8.17 -> 1.6.0, a major), which is a different and much riskier change wearing a rename's clothes. X-ClickHouse-* headers are untouched: they are wire protocol the server sends and expects, and a different token shape from the module name.
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from typing import Optional
|
|
|
|
from datastore_connect.datatypes.registry import get_from_name
|
|
|
|
from datastore_connect.driver.query import QueryResult
|
|
|
|
|
|
class QuerySummary:
|
|
summary = {}
|
|
|
|
def __init__(self, summary: Optional[dict] = None):
|
|
if summary is not None:
|
|
self.summary = summary
|
|
|
|
@property
|
|
def written_rows(self) -> int:
|
|
return int(self.summary.get('written_rows', 0))
|
|
|
|
def written_bytes(self) -> int:
|
|
return int(self.summary.get('written_bytes', 0))
|
|
|
|
def query_id(self) -> str:
|
|
return self.summary.get('query_id', '')
|
|
|
|
def as_query_result(self) -> QueryResult:
|
|
data = []
|
|
column_names = []
|
|
column_types = []
|
|
str_type = get_from_name('String')
|
|
int_type = get_from_name('Int64')
|
|
for key, value in self.summary.items():
|
|
column_names.append(key)
|
|
if value.isnumeric():
|
|
data.append(int(value))
|
|
column_types.append(int_type)
|
|
else:
|
|
data.append(value)
|
|
column_types.append(str_type)
|
|
return QueryResult([data], column_names=tuple(column_names), column_types=tuple(column_types))
|