Add datasource quality and schema gates
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Mapping
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
@@ -224,6 +226,11 @@ def api_create_stage(
|
||||
"mode": stage.mode,
|
||||
"row_count": stage.row_count,
|
||||
"fingerprint": stage.fingerprint,
|
||||
"validation_valid": stage.validation.get("valid"),
|
||||
"quality_policy_hash": stage.validation.get("policy_hash"),
|
||||
"schema_classification": _safe_mapping(
|
||||
stage.validation.get("schema_change")
|
||||
).get("classification"),
|
||||
},
|
||||
)
|
||||
session.commit()
|
||||
@@ -262,6 +269,9 @@ def api_promote_stage(
|
||||
"materialization_ref": materialization.ref,
|
||||
"revision": materialization.revision,
|
||||
"frozen": materialization.frozen_at is not None,
|
||||
"quality_policy_hash": _safe_mapping(
|
||||
materialization.provenance.get("stage_validation")
|
||||
).get("policy_hash"),
|
||||
},
|
||||
)
|
||||
session.commit()
|
||||
@@ -663,6 +673,10 @@ def _governance(
|
||||
return DatasourceGovernance.from_mapping(payload.model_dump())
|
||||
|
||||
|
||||
def _safe_mapping(value: object) -> Mapping[str, object]:
|
||||
return value if isinstance(value, Mapping) else {}
|
||||
|
||||
|
||||
def _audit(
|
||||
session: Session,
|
||||
principal: ApiPrincipal,
|
||||
|
||||
Reference in New Issue
Block a user