59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Dict, Any, Optional, List
|
|
|
|
class BundleItem(BaseModel):
|
|
name: str
|
|
tracking_ref: str
|
|
repo_url: str
|
|
subdir: str
|
|
type: str = "git"
|
|
|
|
class BundleListResponse(BaseModel):
|
|
bundles: List[BundleItem]
|
|
|
|
class SitomatProvisionRequest(BaseModel):
|
|
dataset_id: str
|
|
bundle_name: Optional[str] = "dlh-core-ingestion"
|
|
source_type: str = Field(..., description="database | gws | api")
|
|
connection_id: str
|
|
source_config: Dict[str, Any] = Field(default_factory=dict)
|
|
bronze_target: Optional[Dict[str, Any]] = Field(default_factory=lambda: {
|
|
"s3_bucket": "dlh-landing",
|
|
"s3_prefix": "bronze/raw/"
|
|
})
|
|
dbt_models: Optional[Dict[str, str]] = Field(default_factory=dict)
|
|
schedule: Optional[str] = "0 2 * * *"
|
|
|
|
class SitomatProvisionResponse(BaseModel):
|
|
status: str = "provisioned"
|
|
dataset_id: str
|
|
bundle_name: str
|
|
bronze_dag_id: str
|
|
transform_dag_id: str
|
|
initial_version: str
|
|
git_commit_hash: Optional[str] = None
|
|
yaml_config_path: Optional[str] = None
|
|
|
|
class SitomatTriggerRequest(BaseModel):
|
|
correlation_id: str
|
|
dataset_id: str
|
|
target_dag_version: Optional[str] = "latest"
|
|
conf: Optional[Dict[str, Any]] = Field(default_factory=dict)
|
|
|
|
class SitomatTriggerResponse(BaseModel):
|
|
status: str = "triggered"
|
|
correlation_id: str
|
|
dag_id: str
|
|
dag_run_id: str
|
|
pinned_version: str
|
|
|
|
class SitomatLedgerCallback(BaseModel):
|
|
correlation_id: str
|
|
dataset_id: str
|
|
dag_id: str
|
|
dag_run_id: str
|
|
status: str
|
|
bronze_ref: Optional[str] = None
|
|
record_count: Optional[int] = 0
|
|
byte_size: Optional[int] = 0
|