feat: seed default plugins/pipelines, auto-enqueue jobs on asset ingest
- Migration seeds metadata_extractor, sidecar_sync, no_op plugins - Pipelines: extract_metadata → metadata_extractor, sync_sidecar → sidecar_sync - Worker reacts to AssetIngested → enqueues ExtractMetadata job - Worker reacts to SidecarSyncRequested → enqueues SyncSidecar job - Closes the ingest-to-processing loop end-to-end
This commit is contained in:
@@ -162,11 +162,8 @@ mod tests {
|
||||
inner.save(&asset).await.unwrap();
|
||||
|
||||
let share_repo = Arc::new(InMemoryShareRepository::new());
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
owner_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), owner_id);
|
||||
|
||||
let found = filtered.find_by_id(&asset.asset_id).await.unwrap();
|
||||
assert!(found.is_some());
|
||||
@@ -183,11 +180,8 @@ mod tests {
|
||||
inner.save(&asset).await.unwrap();
|
||||
|
||||
let share_repo = Arc::new(InMemoryShareRepository::new());
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
stranger_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), stranger_id);
|
||||
|
||||
let found = filtered.find_by_id(&asset.asset_id).await.unwrap();
|
||||
assert!(found.is_none());
|
||||
@@ -211,11 +205,8 @@ mod tests {
|
||||
let target = target_user(scope.scope_id, friend_id);
|
||||
share_repo.save_target(&target).await.unwrap();
|
||||
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
friend_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), friend_id);
|
||||
|
||||
let found = filtered.find_by_id(&asset.asset_id).await.unwrap();
|
||||
assert!(found.is_some());
|
||||
@@ -239,11 +230,8 @@ mod tests {
|
||||
let share_repo = Arc::new(InMemoryShareRepository::new());
|
||||
|
||||
// Stranger queries by checksum — should only see their own
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
stranger_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), stranger_id);
|
||||
|
||||
let results = filtered
|
||||
.find_by_checksum(&asset_a.source_reference.checksum)
|
||||
@@ -262,11 +250,8 @@ mod tests {
|
||||
inner.save(&asset).await.unwrap();
|
||||
|
||||
let share_repo = Arc::new(InMemoryShareRepository::new());
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
owner_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), owner_id);
|
||||
|
||||
let results = filtered.find_by_owner(&owner_id, 10, 0).await.unwrap();
|
||||
assert_eq!(results.len(), 1);
|
||||
@@ -284,11 +269,8 @@ mod tests {
|
||||
let share_repo = Arc::new(InMemoryShareRepository::new());
|
||||
|
||||
// Stranger queries owner's assets without a share — should get nothing
|
||||
let filtered = VisibilityFilteredAssetRepository::new(
|
||||
inner.clone(),
|
||||
share_repo.clone(),
|
||||
stranger_id,
|
||||
);
|
||||
let filtered =
|
||||
VisibilityFilteredAssetRepository::new(inner.clone(), share_repo.clone(), stranger_id);
|
||||
|
||||
let results = filtered.find_by_owner(&owner_id, 10, 0).await.unwrap();
|
||||
assert!(results.is_empty());
|
||||
|
||||
Reference in New Issue
Block a user