backend-api/pipeline/models/pipeline.py

42 lines
985 B
Python

from datetime import datetime, timezone
import enum
from uuid import UUID
from pydantic import BaseModel, Field
from models.ingestion import IngestorInput
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))
class PipelineCreate(BaseModel):
name: str
description: str
config: PipelineConfig