v0.3.16-pre.002-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-store-api/src/model/raw_outcome.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
/// Outcome for one canonical RAW entity in an idempotent persistence operation.
|
||||
#[non_exhaustive]
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
@@ -13,6 +13,7 @@ pub enum RawEntityWriteOutcome {
|
||||
/// Normal persistence skipped a durable purged tombstone.
|
||||
SkippedPurged,
|
||||
}
|
||||
|
||||
/// Outcome for one deterministic acquisition observation write.
|
||||
#[non_exhaustive]
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||
@@ -24,12 +25,14 @@ pub enum RawObservationWriteOutcome {
|
||||
/// 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]
|
||||
@@ -42,6 +45,7 @@ impl RawAcquisitionWriteOutcome {
|
||||
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 {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-store-api/src/model/raw_transaction.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
/// Durable backend-independent identity of one canonical RAW transaction.
|
||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
|
||||
@@ -7,6 +7,7 @@ pub struct RawTransactionReference {
|
||||
network: crate::RawNetworkId,
|
||||
signature: crate::RawTransactionSignature,
|
||||
}
|
||||
|
||||
impl RawTransactionReference {
|
||||
/// Creates one durable transaction identity from network and canonical Solana signature.
|
||||
#[must_use]
|
||||
@@ -19,6 +20,7 @@ impl RawTransactionReference {
|
||||
pub fn network(&self) -> &crate::RawNetworkId {
|
||||
return &self.network;
|
||||
}
|
||||
|
||||
/// Returns the canonical transaction signature.
|
||||
#[must_use]
|
||||
pub const fn signature(&self) -> crate::RawTransactionSignature {
|
||||
@@ -32,6 +34,7 @@ impl RawTransactionReference {
|
||||
/// `content_hash`, provider identity, canonicality or any physical database key layout.
|
||||
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
||||
pub struct RawTransactionVariantId(u64);
|
||||
|
||||
impl RawTransactionVariantId {
|
||||
/// Creates one non-zero stable variant identifier.
|
||||
pub fn try_new(value: u64) -> crate::Result<Self> {
|
||||
@@ -54,6 +57,7 @@ pub struct RawTransactionVariantReference {
|
||||
transaction: crate::RawTransactionReference,
|
||||
variant_id: crate::RawTransactionVariantId,
|
||||
}
|
||||
|
||||
impl RawTransactionVariantReference {
|
||||
/// Creates one durable variant reference from logical transaction identity and surrogate id.
|
||||
#[must_use]
|
||||
@@ -83,6 +87,7 @@ pub enum RawTransactionVariantOrigin {
|
||||
/// Explicitly synthesized canonical RAW representation derived from preserved parent variants.
|
||||
Synthetic,
|
||||
}
|
||||
|
||||
impl RawTransactionVariantOrigin {
|
||||
/// Returns the stable persistence code for this origin.
|
||||
#[must_use]
|
||||
@@ -109,6 +114,7 @@ pub enum RawTransactionVariantRelation {
|
||||
/// No contradiction must be asserted, but no safe dominance relation is proved.
|
||||
Incomparable,
|
||||
}
|
||||
|
||||
impl RawTransactionVariantRelation {
|
||||
/// Returns the stable persistence/diagnostic code for this relation.
|
||||
#[must_use]
|
||||
@@ -149,6 +155,7 @@ pub enum RawTransactionVariantRelationReason {
|
||||
/// Canonical representations differ but the current comparator cannot prove equality, dominance or contradiction safely.
|
||||
UnsupportedCanonicalDifference,
|
||||
}
|
||||
|
||||
impl RawTransactionVariantRelationReason {
|
||||
/// Returns the stable persistence/diagnostic code for this reason.
|
||||
#[must_use]
|
||||
@@ -173,6 +180,7 @@ pub struct RawTransactionVariantComparison {
|
||||
reason: crate::RawTransactionVariantRelationReason,
|
||||
relation: crate::RawTransactionVariantRelation,
|
||||
}
|
||||
|
||||
impl RawTransactionVariantComparison {
|
||||
/// Creates one relation/reason pair and rejects semantically inconsistent combinations.
|
||||
pub fn try_new(relation: crate::RawTransactionVariantRelation, reason: crate::RawTransactionVariantRelationReason) -> crate::Result<Self> {
|
||||
@@ -204,6 +212,7 @@ pub enum RawTransactionConflictStatus {
|
||||
/// The conflict currently has an explicit durable resolution while history remains preserved.
|
||||
Resolved,
|
||||
}
|
||||
|
||||
impl RawTransactionConflictStatus {
|
||||
/// Returns the stable persistence code for this status.
|
||||
#[must_use]
|
||||
@@ -228,12 +237,14 @@ pub struct RawTransaction {
|
||||
reference: crate::RawTransactionReference,
|
||||
slot: u64,
|
||||
}
|
||||
|
||||
impl RawTransaction {
|
||||
/// Creates one complete canonical RAW transaction.
|
||||
#[must_use]
|
||||
pub fn new(reference: crate::RawTransactionReference, slot: u64, block_time: std::option::Option<crate::RawTimestamp>, payload: crate::RawPayload) -> Self {
|
||||
return Self { block_time, payload, reference, slot };
|
||||
}
|
||||
|
||||
/// Returns the optional canonical block timestamp.
|
||||
#[must_use]
|
||||
pub const fn block_time(&self) -> std::option::Option<crate::RawTimestamp> {
|
||||
@@ -245,6 +256,7 @@ impl RawTransaction {
|
||||
pub fn payload(&self) -> &crate::RawPayload {
|
||||
return &self.payload;
|
||||
}
|
||||
|
||||
/// Returns the durable backend-independent transaction identity.
|
||||
#[must_use]
|
||||
pub fn reference(&self) -> &crate::RawTransactionReference {
|
||||
@@ -257,6 +269,7 @@ impl RawTransaction {
|
||||
return self.slot;
|
||||
}
|
||||
}
|
||||
|
||||
/// Persistable acquisition observation linked to one canonical RAW transaction.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub struct RawTransactionObservation {
|
||||
@@ -264,12 +277,14 @@ pub struct RawTransactionObservation {
|
||||
provenance: crate::RawAcquisitionProvenance,
|
||||
transaction: crate::RawTransactionReference,
|
||||
}
|
||||
|
||||
impl RawTransactionObservation {
|
||||
/// Creates one successful observation of a complete canonical RAW transaction.
|
||||
#[must_use]
|
||||
pub fn new(observation_key: crate::RawObservationKey, transaction: crate::RawTransactionReference, provenance: crate::RawAcquisitionProvenance) -> Self {
|
||||
return Self { observation_key, provenance, transaction };
|
||||
}
|
||||
|
||||
/// Returns the deterministic producer-owned observation idempotence key.
|
||||
#[must_use]
|
||||
pub const fn observation_key(&self) -> crate::RawObservationKey {
|
||||
@@ -281,6 +296,7 @@ impl RawTransactionObservation {
|
||||
pub fn provenance(&self) -> &crate::RawAcquisitionProvenance {
|
||||
return &self.provenance;
|
||||
}
|
||||
|
||||
/// Returns the durable transaction identity observed by this acquisition.
|
||||
#[must_use]
|
||||
pub fn transaction(&self) -> &crate::RawTransactionReference {
|
||||
|
||||
Reference in New Issue
Block a user