use crate::protocol::Clip;
use crate::store::models::StoredClip;
pub fn clip_wire_to_stored(c: &Clip) -> Result<Option<StoredClip>, String> {
if c.clip_id.is_empty() {
return Ok(None);
}
let created_at = chrono::DateTime::parse_from_rfc3339(&c.created_at)
.map_err(|e| format!("bad created_at {:?}: {e}", c.created_at))?
.timestamp_millis();
let content: Option<Vec<u8>> = if c.content.is_empty() {
None
} else {
Some(c.content.as_bytes().to_vec())
};
Ok(Some(StoredClip {
id: c.clip_id.clone(),
source: c.source.clone(),
source_key: None,
content_type: c.content_type.clone(),
content,
media_path: c.media_path.clone(),
byte_size: c.byte_size,
created_at,
pinned: c.is_pinned,
pinned_at: None,
}))
}