pub struct SeaOrmPipelineRunRepository { /* private fields */ }Expand description
SeaORM-backed implementation of PipelineRunRepository.
Wraps a shared DatabaseConnection. All methods write or query the
pipeline_runs table using the “new row per status transition” pattern,
matching both Python’s writing pattern and the cross-SDK audit trail
requirement.
Implementations§
Source§impl SeaOrmPipelineRunRepository
impl SeaOrmPipelineRunRepository
Sourcepub fn new(db: Arc<DatabaseConnection>) -> Self
pub fn new(db: Arc<DatabaseConnection>) -> Self
Create a new repository backed by the given database connection.
Trait Implementations§
Source§impl PipelineRunRepository for SeaOrmPipelineRunRepository
impl PipelineRunRepository for SeaOrmPipelineRunRepository
Source§fn log_pipeline_run<'life0, 'life1, 'async_trait>(
&'life0 self,
pipeline_run_id: Uuid,
pipeline_id: Uuid,
pipeline_name: &'life1 str,
dataset_id: Option<Uuid>,
status: PipelineRunStatus,
run_info: Option<Value>,
) -> Pin<Box<dyn Future<Output = Result<Uuid, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn log_pipeline_run<'life0, 'life1, 'async_trait>(
&'life0 self,
pipeline_run_id: Uuid,
pipeline_id: Uuid,
pipeline_name: &'life1 str,
dataset_id: Option<Uuid>,
status: PipelineRunStatus,
run_info: Option<Value>,
) -> Pin<Box<dyn Future<Output = Result<Uuid, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert one row representing a status transition. Returns the new row’s
primary key (
pipeline_runs.id), which is a freshly generated UUIDv4.Source§fn latest_status<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
dataset_ids: &'life1 [Uuid],
pipeline_name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<HashMap<Uuid, PipelineRunStatus>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn latest_status<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
dataset_ids: &'life1 [Uuid],
pipeline_name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<HashMap<Uuid, PipelineRunStatus>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Latest status per dataset for a given pipeline name. Read more
Source§fn list_recent<'life0, 'async_trait>(
&'life0 self,
dataset_id: Option<Uuid>,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRunRow>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_recent<'life0, 'async_trait>(
&'life0 self,
dataset_id: Option<Uuid>,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRunRow>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Recent runs for the activity router, with optional dataset filter.
Source§fn list_recent_with_attribution<'life0, 'async_trait>(
&'life0 self,
dataset_id: Option<Uuid>,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRunWithAttributionRow>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_recent_with_attribution<'life0, 'async_trait>(
&'life0 self,
dataset_id: Option<Uuid>,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRunWithAttributionRow>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Recent runs with attribution (dataset + owner). Powers
GET /api/v1/activity/pipeline-runs. Single SELECT joining
pipeline_runs ⨝ datasets ⨝ users (LEFT JOIN both ways so orphaned
runs whose dataset has been deleted still surface). Read moreSource§fn reset_orphans<'life0, 'life1, 'async_trait>(
&'life0 self,
reason: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn reset_orphans<'life0, 'life1, 'async_trait>(
&'life0 self,
reason: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Restart-orphan reset: rewrite any row stuck in
INITIATED / STARTED
without a more recent successor to ERRORED with the given reason. Read moreSource§fn set_payload_field<'life0, 'life1, 'async_trait>(
&'life0 self,
run_id: Uuid,
key: &'life1 str,
value: Value,
) -> Pin<Box<dyn Future<Output = Result<(), DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_payload_field<'life0, 'life1, 'async_trait>(
&'life0 self,
run_id: Uuid,
key: &'life1 str,
value: Value,
) -> Pin<Box<dyn Future<Output = Result<(), DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Upsert a single payload field for a run. Concurrent calls with the
same
(run_id, key) are last-write-wins per row; calls with different
keys do not contend.Source§fn get_payload<'life0, 'async_trait>(
&'life0 self,
run_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Map<String, Value>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_payload<'life0, 'async_trait>(
&'life0 self,
run_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Map<String, Value>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Read all payload fields for a run as a
serde_json::Map. Returns an
empty map (not None) when the run has no payload events; returns
Err only on actual DB failures.Source§fn get_pipeline_run<'life0, 'async_trait>(
&'life0 self,
pipeline_run_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_pipeline_run<'life0, 'async_trait>(
&'life0 self,
pipeline_run_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_pipeline_run_by_dataset<'life0, 'life1, 'async_trait>(
&'life0 self,
dataset_id: Uuid,
pipeline_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_pipeline_run_by_dataset<'life0, 'life1, 'async_trait>(
&'life0 self,
dataset_id: Uuid,
pipeline_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_pipeline_runs_by_dataset<'life0, 'async_trait>(
&'life0 self,
dataset_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_pipeline_runs_by_dataset<'life0, 'async_trait>(
&'life0 self,
dataset_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<PipelineRun>, DatabaseError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Return one latest row per distinct
pipeline_name that has runs for
dataset_id. Result order is unspecified. Read moreAuto Trait Implementations§
impl Freeze for SeaOrmPipelineRunRepository
impl RefUnwindSafe for SeaOrmPipelineRunRepository
impl Send for SeaOrmPipelineRunRepository
impl Sync for SeaOrmPipelineRunRepository
impl Unpin for SeaOrmPipelineRunRepository
impl UnsafeUnpin for SeaOrmPipelineRunRepository
impl UnwindSafe for SeaOrmPipelineRunRepository
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more