use crate::error::StorageError;
use crate::storage::layout;
use auths_verifier::types::CanonicalDid;
use chrono::{DateTime, Utc};
use git2::Repository;
use std::collections::HashMap;
#[derive(Debug, Clone, Default)]
pub struct AttestationMetadata {
pub note: Option<String>,
pub timestamp: Option<DateTime<Utc>>,
pub expires_at: Option<DateTime<Utc>>,
}
pub fn aggregate_canonical_refs(
repo: &Repository,
device_dids: &[CanonicalDid],
) -> Result<HashMap<String, String>, StorageError> {
let mut canonical = HashMap::new();
for did in device_dids {
let prefix = layout::device_namespace_prefix(did.as_str());
let refs = repo.references_glob(&format!("{}/refs/**", prefix))?;
for r in refs.flatten() {
if let Some(name) = r.name()
&& let Some(target) = r.target()
{
canonical
.entry(name.to_string())
.or_insert_with(|| target.to_string());
}
}
}
Ok(canonical)
}