Preserve connector source runtime evidence
This commit is contained in:
@@ -31,9 +31,12 @@ from govoplan_datasources.backend.schemas import (
|
||||
DatasourceListResponse,
|
||||
DatasourceMaterializationListResponse,
|
||||
DatasourceMaterializationResponse,
|
||||
DatasourceOriginHealthResponse,
|
||||
DatasourceOriginListResponse,
|
||||
DatasourceOriginPushdownResponse,
|
||||
DatasourceOriginRegisterRequest,
|
||||
DatasourceOriginResponse,
|
||||
DatasourcePreviewDiagnosticResponse,
|
||||
DatasourcePreviewResponse,
|
||||
DatasourceResponse,
|
||||
DatasourceRetireResponse,
|
||||
@@ -383,6 +386,8 @@ def api_preview_datasource(
|
||||
offset: int = Query(default=0, ge=0),
|
||||
consistency: str = Query(default="current", pattern="^(current|live|frozen)$"),
|
||||
materialization_ref: str | None = Query(default=None, max_length=120),
|
||||
max_bytes: int = Query(default=1_000_000, ge=1_024, le=20_000_000),
|
||||
timeout_ms: int = Query(default=2_000, ge=100, le=10_000),
|
||||
session: Session = Depends(get_session),
|
||||
principal: ApiPrincipal = Depends(get_api_principal),
|
||||
) -> DatasourcePreviewResponse:
|
||||
@@ -397,6 +402,8 @@ def api_preview_datasource(
|
||||
consistency=consistency, # type: ignore[arg-type]
|
||||
limit=limit,
|
||||
offset=offset,
|
||||
max_bytes=max_bytes,
|
||||
timeout_ms=timeout_ms,
|
||||
),
|
||||
)
|
||||
except DatasourceError as exc:
|
||||
@@ -411,6 +418,20 @@ def api_preview_datasource(
|
||||
if result.materialization
|
||||
else None
|
||||
),
|
||||
returned_bytes=result.returned_bytes,
|
||||
elapsed_ms=result.elapsed_ms,
|
||||
effective_row_limit=result.effective_row_limit,
|
||||
effective_byte_limit=result.effective_byte_limit,
|
||||
effective_timeout_ms=result.effective_timeout_ms,
|
||||
diagnostics=[
|
||||
DatasourcePreviewDiagnosticResponse(
|
||||
severity=item.severity,
|
||||
code=item.code,
|
||||
message=item.message,
|
||||
details=dict(item.details),
|
||||
)
|
||||
for item in result.diagnostics
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -662,6 +683,23 @@ def _origin_response(item: DatasourceOrigin) -> DatasourceOriginResponse:
|
||||
updated_at=item.updated_at.isoformat() if item.updated_at else None,
|
||||
capabilities=list(item.capabilities),
|
||||
metadata=dict(item.metadata),
|
||||
source_mode=item.source_mode,
|
||||
pushdown=DatasourceOriginPushdownResponse(
|
||||
projections=item.pushdown.projections,
|
||||
pagination=item.pushdown.pagination,
|
||||
filters=list(item.pushdown.filters),
|
||||
aggregations=list(item.pushdown.aggregations),
|
||||
sorting=list(item.pushdown.sorting),
|
||||
),
|
||||
health=DatasourceOriginHealthResponse(
|
||||
status=item.health.status,
|
||||
code=item.health.code,
|
||||
summary=item.health.summary,
|
||||
checked_at=(
|
||||
item.health.checked_at.isoformat() if item.health.checked_at else None
|
||||
),
|
||||
details=dict(item.health.details),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user