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, Path(id): Path, ) -> Result, 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, Path(id): Path, ) -> Result>, 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, Json(req): Json, // Reuse: has media_ids field ) -> Result, ApiError> { let media_ids: Vec = 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()}))) }