use crate::{cache::CacheCollectionCompleteness, cache_file::JsonCacheReport};
use serde::{Deserialize as SerdeDeserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct SnapshotEnvelope<Metadata, Data> {
pub schema_version: u32,
pub network: String,
pub source_endpoint: String,
pub fetched_at: String,
pub fetched_by: String,
pub domain: String,
pub entity: String,
pub collection: String,
pub scope: String,
#[serde(flatten)]
pub metadata: Metadata,
pub completeness: CacheCollectionCompleteness,
#[serde(flatten)]
pub data: Data,
}
impl<Metadata, Data> JsonCacheReport for SnapshotEnvelope<Metadata, Data> {
fn schema_version(&self) -> u32 {
self.schema_version
}
fn network(&self) -> &str {
&self.network
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SnapshotIdentityMismatch {
pub field: &'static str,
pub expected: String,
pub actual: String,
}