Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I28cf5b7b7cff8e90e123d624d97cf9656a6a6964
38 lines
1 KiB
Rust
38 lines
1 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::Serialize;
|
|
|
|
#[derive(Debug, Serialize, utoipa::ToSchema)]
|
|
pub struct ExternalMetadataResponse {
|
|
pub id: String,
|
|
pub media_id: String,
|
|
pub source: String,
|
|
pub external_id: Option<String>,
|
|
#[schema(value_type = Object)]
|
|
pub metadata: serde_json::Value,
|
|
pub confidence: f64,
|
|
pub last_updated: DateTime<Utc>,
|
|
}
|
|
|
|
impl From<pinakes_core::enrichment::ExternalMetadata>
|
|
for ExternalMetadataResponse
|
|
{
|
|
fn from(m: pinakes_core::enrichment::ExternalMetadata) -> Self {
|
|
let metadata = serde_json::from_str(&m.metadata_json).unwrap_or_else(|e| {
|
|
tracing::warn!(
|
|
"failed to deserialize external metadata JSON for media {}: {}",
|
|
m.media_id.0,
|
|
e
|
|
);
|
|
serde_json::Value::Null
|
|
});
|
|
Self {
|
|
id: m.id.to_string(),
|
|
media_id: m.media_id.0.to_string(),
|
|
source: m.source.to_string(),
|
|
external_id: m.external_id,
|
|
metadata,
|
|
confidence: m.confidence,
|
|
last_updated: m.last_updated,
|
|
}
|
|
}
|
|
}
|