use time::OffsetDateTime;
use crate::entities::CeremonyEvent;
use crate::value_objects::{
AuditActor, AuthorizationEvidence, CeremonyId, CeremonyName, CeremonyVersion, EventId,
TraceContext,
};
use super::AuthorizedAuditFact;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AuditFact {
pub event_id: EventId,
pub event: CeremonyEvent,
pub ceremony_id: CeremonyId,
pub definition_name: CeremonyName,
pub definition_version: CeremonyVersion,
pub occurred_at: OffsetDateTime,
pub actor: AuditActor,
pub correlation_id: Option<EventId>,
pub causation_id: Option<EventId>,
pub trace: Option<TraceContext>,
}
impl AuditFact {
#[must_use]
pub fn authorized(self, evidence: AuthorizationEvidence) -> AuthorizedAuditFact {
AuthorizedAuditFact::new(self, evidence)
}
}