56 lines
1.9 KiB
Rust
56 lines
1.9 KiB
Rust
// 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;
|
|
}
|
|
}
|