Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: If8fe8b38c1d9c4fecd40ff71f88d2ae06a6a6964
48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
use axum::{
|
|
Json,
|
|
extract::{Path, State},
|
|
};
|
|
use pinakes_core::model::MediaId;
|
|
use uuid::Uuid;
|
|
|
|
use crate::{dto::*, error::ApiError, state::AppState};
|
|
|
|
pub async fn trigger_enrichment(
|
|
State(state): State<AppState>,
|
|
Path(id): Path<Uuid>,
|
|
) -> Result<Json<serde_json::Value>, ApiError> {
|
|
// Submit enrichment as a background job
|
|
let job_id = state
|
|
.job_queue
|
|
.submit(pinakes_core::jobs::JobKind::Enrich {
|
|
media_ids: vec![MediaId(id)],
|
|
})
|
|
.await;
|
|
Ok(Json(serde_json::json!({"job_id": job_id.to_string()})))
|
|
}
|
|
|
|
pub async fn get_external_metadata(
|
|
State(state): State<AppState>,
|
|
Path(id): Path<Uuid>,
|
|
) -> Result<Json<Vec<ExternalMetadataResponse>>, ApiError> {
|
|
let metadata = state.storage.get_external_metadata(MediaId(id)).await?;
|
|
Ok(Json(
|
|
metadata
|
|
.into_iter()
|
|
.map(ExternalMetadataResponse::from)
|
|
.collect(),
|
|
))
|
|
}
|
|
|
|
pub async fn batch_enrich(
|
|
State(state): State<AppState>,
|
|
Json(req): Json<BatchDeleteRequest>, // Reuse: has media_ids field
|
|
) -> Result<Json<serde_json::Value>, ApiError> {
|
|
let media_ids: Vec<MediaId> =
|
|
req.media_ids.into_iter().map(MediaId).collect();
|
|
let job_id = state
|
|
.job_queue
|
|
.submit(pinakes_core::jobs::JobKind::Enrich { media_ids })
|
|
.await;
|
|
Ok(Json(serde_json::json!({"job_id": job_id.to_string()})))
|
|
}
|