#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Retrospection {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub basis: Option<crate::generated::dev::idiolect::defs::Basis>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
pub detected_at: idiolect_records::Datetime,
pub detecting_party: idiolect_records::Did,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disputed_attribution: Option<bool>,
pub encounter: crate::generated::dev::idiolect::defs::EncounterRef,
pub finding: RetrospectionFinding,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub latency: Option<i64>,
pub occurred_at: idiolect_records::Datetime,
}
impl crate::Record for Retrospection {
const NSID: &'static str = "dev.idiolect.retrospection";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RetrospectionFinding {
pub detail: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub evidence: Option<RetrospectionFindingEvidence>,
pub kind: RetrospectionFindingKind,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum RetrospectionFindingEvidence {
#[serde(rename = "dev.idiolect.defs#evidenceDivergence")]
EvidenceDivergence(crate::generated::dev::idiolect::defs::EvidenceDivergence),
#[serde(rename = "dev.idiolect.defs#evidenceLoss")]
EvidenceLoss(crate::generated::dev::idiolect::defs::EvidenceLoss),
#[serde(rename = "dev.idiolect.defs#evidenceMismatch")]
EvidenceMismatch(crate::generated::dev::idiolect::defs::EvidenceMismatch),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum RetrospectionFindingKind {
MergeDivergence,
DataLoss,
ReconciliationMismatch,
Other,
}