// file: crates/ksp-store-api/src/model/raw_outcome.rs // version: 1 /// Outcome for one canonical RAW entity in an idempotent persistence operation. #[non_exhaustive] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum RawEntityWriteOutcome { /// The canonical RAW entity was inserted for the first time. Inserted, /// Identical canonical content was already durable. AlreadyPresent, /// A previously purged RAW entity was explicitly rehydrated. Rehydrated, /// Normal persistence skipped a durable purged tombstone. SkippedPurged, } /// Outcome for one deterministic acquisition observation write. #[non_exhaustive] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum RawObservationWriteOutcome { /// The observation was inserted for the first time. Inserted, /// The same observation key already identified identical durable content. AlreadyPresent, /// No observation was recorded because the associated RAW entity was intentionally skipped. NotRecorded, } /// Combined outcome of one atomic canonical RAW entity plus observation acquisition. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct RawAcquisitionWriteOutcome { entity: crate::RawEntityWriteOutcome, observation: crate::RawObservationWriteOutcome, } impl RawAcquisitionWriteOutcome { /// Creates one backend-independent atomic acquisition outcome. #[must_use] pub const fn new(entity: crate::RawEntityWriteOutcome, observation: crate::RawObservationWriteOutcome) -> Self { return Self { entity, observation }; } /// Returns the canonical RAW entity write outcome. #[must_use] pub const fn entity(&self) -> crate::RawEntityWriteOutcome { return self.entity; } /// Returns the acquisition observation write outcome. #[must_use] pub const fn observation(&self) -> crate::RawObservationWriteOutcome { return self.observation; } }