mirror of
https://github.com/borbann-platform/backend-api.git
synced 2025-12-18 20:24:05 +01:00
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from datetime import datetime, timezone
|
|
import enum
|
|
from uuid import UUID
|
|
from pydantic import BaseModel, Field
|
|
|
|
from models.ingestion import IngestorInput, OutputData
|
|
|
|
|
|
class PipelineStatus(str, enum.Enum):
|
|
ACTIVE = "active"
|
|
INACTIVE = "inactive"
|
|
FAILED = "failed"
|
|
|
|
|
|
class RunFrequency(str, enum.Enum):
|
|
DAILY = "daily"
|
|
WEEKLY = "weekly"
|
|
MONTHLY = "monthly"
|
|
|
|
|
|
class PipelineConfig(BaseModel):
|
|
ingestor_config: IngestorInput
|
|
run_frequency: RunFrequency
|
|
last_run: datetime | None = None
|
|
next_run: datetime | None = None
|
|
|
|
|
|
class Pipeline(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
description: str
|
|
config: PipelineConfig
|
|
status: PipelineStatus = Field(default=PipelineStatus.INACTIVE)
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
latest_run_output: OutputData | None = Field(
|
|
default=None, description="Output of the last successful run"
|
|
)
|
|
|
|
|
|
class PipelineCreate(BaseModel):
|
|
name: str
|
|
description: str
|
|
config: PipelineConfig
|