use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct EmbedResponse {
#[serde(default)]
pub model: Option<String>,
#[serde(default)]
pub embeddings: Vec<Vec<f64>>,
#[serde(default)]
pub total_duration: Option<i64>,
#[serde(default)]
pub load_duration: Option<i64>,
#[serde(default)]
pub prompt_eval_count: Option<i32>,
}
impl EmbedResponse {
pub fn len(&self) -> usize {
self.embeddings.len()
}
pub fn is_empty(&self) -> bool {
self.embeddings.is_empty()
}
pub fn dimensions(&self) -> Option<usize> {
self.embeddings.first().map(|e| e.len())
}
pub fn first_embedding(&self) -> Option<&Vec<f64>> {
self.embeddings.first()
}
pub fn total_duration_ms(&self) -> Option<f64> {
self.total_duration.map(|ns| ns as f64 / 1_000_000.0)
}
pub fn load_duration_ms(&self) -> Option<f64> {
self.load_duration.map(|ns| ns as f64 / 1_000_000.0)
}
}