use crate::error::StorageError;
use auths_verifier::core::Attestation;
use auths_verifier::types::CanonicalDid;
pub trait AttestationSource {
fn load_attestations_for_device(
&self,
device_did: &CanonicalDid,
) -> Result<Vec<Attestation>, StorageError>;
fn load_all_attestations(&self) -> Result<Vec<Attestation>, StorageError>;
fn load_all_attestations_paginated(
&self,
limit: usize,
offset: usize,
) -> Result<Vec<Attestation>, StorageError> {
let devices = self.discover_device_dids()?;
let mut all_attestations = Vec::new();
for device_did in devices.into_iter().skip(offset).take(limit) {
match self.load_attestations_for_device(&device_did) {
Ok(atts) => all_attestations.extend(atts),
Err(e) => {
log::warn!(
"Failed to load attestations for device {}: {}",
device_did,
e
);
}
}
}
Ok(all_attestations)
}
fn discover_device_dids(&self) -> Result<Vec<CanonicalDid>, StorageError>;
}