50 lines
1.9 KiB
Rust
50 lines
1.9 KiB
Rust
// file: crates/ksp-raw-transaction-lib/src/acquisition.rs
|
|
// version: 1
|
|
|
|
/// Complete source-neutral RAW transaction acquisition containing one canonical entity and one producer-owned observation.
|
|
pub struct RawTransactionAcquisition {
|
|
observation: ksp_store_api::RawTransactionObservation,
|
|
transaction: ksp_store_api::RawTransaction,
|
|
}
|
|
|
|
impl crate::RawTransactionAcquisition {
|
|
/// Returns the producer-owned acquisition observation linked to the canonical transaction.
|
|
#[must_use]
|
|
pub const fn observation(&self) -> &ksp_store_api::RawTransactionObservation {
|
|
return &self.observation;
|
|
}
|
|
|
|
/// Returns the canonical source-independent RAW transaction.
|
|
#[must_use]
|
|
pub const fn transaction(&self) -> &ksp_store_api::RawTransaction {
|
|
return &self.transaction;
|
|
}
|
|
|
|
/// Consumes this acquisition into its canonical transaction and observation.
|
|
#[must_use]
|
|
pub fn into_parts(self) -> (ksp_store_api::RawTransaction, ksp_store_api::RawTransactionObservation) {
|
|
return (self.transaction, self.observation);
|
|
}
|
|
}
|
|
|
|
impl std::fmt::Debug for crate::RawTransactionAcquisition {
|
|
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
return formatter.write_str("RawTransactionAcquisition(..)");
|
|
}
|
|
}
|
|
|
|
/// Assembles one canonical transaction with a producer-owned observation key and safe acquisition provenance.
|
|
#[must_use]
|
|
pub fn assemble_raw_transaction_acquisition(
|
|
transaction: ksp_store_api::RawTransaction,
|
|
observation_key: ksp_store_api::RawObservationKey,
|
|
provenance: ksp_store_api::RawAcquisitionProvenance,
|
|
) -> crate::RawTransactionAcquisition {
|
|
let observation = ksp_store_api::RawTransactionObservation::new(observation_key, transaction.reference().clone(), provenance);
|
|
return crate::RawTransactionAcquisition { observation, transaction };
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "../unit_tests/acquisition.rs"]
|
|
mod tests;
|