Skip to content

Commit

Permalink
Merge pull request #131 from semiotic-ai/rsa_cleanup
Browse files Browse the repository at this point in the history
refactor(receipt_storage_adapter)!: prune trait
  • Loading branch information
aasseman authored Jul 6, 2023
2 parents f26adbe + ecacbdd commit a24e1bc
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 67 deletions.
14 changes: 0 additions & 14 deletions tap_core/src/adapters/receipt_storage_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,6 @@ pub trait ReceiptStorageAdapter {
type AdapterError: std::error::Error + std::fmt::Debug;

fn store_receipt(&mut self, receipt: ReceivedReceipt) -> Result<u64, Self::AdapterError>;
fn retrieve_receipt_by_id(
&self,
receipt_id: u64,
) -> Result<ReceivedReceipt, Self::AdapterError>;
fn retrieve_receipts_by_timestamp(
&self,
timestamp_ns: u64,
) -> Result<Vec<(u64, ReceivedReceipt)>, Self::AdapterError>;
fn retrieve_receipts_upto_timestamp(
&self,
timestamp_ns: u64,
) -> Result<Vec<(u64, ReceivedReceipt)>, Self::AdapterError>;
fn retrieve_receipts_in_timestamp_range<R: RangeBounds<u64>>(
&self,
timestamp_range_ns: R,
Expand All @@ -31,8 +19,6 @@ pub trait ReceiptStorageAdapter {
receipt_id: u64,
receipt: ReceivedReceipt,
) -> Result<(), Self::AdapterError>;
fn remove_receipt_by_id(&mut self, receipt_id: u64) -> Result<(), Self::AdapterError>;
fn remove_receipts_by_ids(&mut self, receipt_ids: &[u64]) -> Result<(), Self::AdapterError>;
fn remove_receipts_in_timestamp_range<R: RangeBounds<u64>>(
&mut self,
timestamp_ns: R,
Expand Down
106 changes: 53 additions & 53 deletions tap_core/src/adapters/test/receipt_storage_adapter_mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,55 +23,32 @@ impl ReceiptStorageAdapterMock {
unique_id: 0u64,
}
}
}

use thiserror::Error;
#[derive(Debug, Error)]
pub enum AdpaterErrorMock {
#[error("something went wrong: {error}")]
AdapterError { error: String },
}

impl ReceiptStorageAdapter for ReceiptStorageAdapterMock {
type AdapterError = AdpaterErrorMock;
fn store_receipt(&mut self, receipt: ReceivedReceipt) -> Result<u64, Self::AdapterError> {
let id = self.unique_id;
let mut receipt_storage =
self.receipt_storage
.write()
.map_err(|e| Self::AdapterError::AdapterError {
error: e.to_string(),
})?;
receipt_storage.insert(id, receipt);
self.unique_id += 1;
Ok(id)
}
fn retrieve_receipt_by_id(
pub fn retrieve_receipt_by_id(
&self,
receipt_id: u64,
) -> Result<ReceivedReceipt, Self::AdapterError> {
) -> Result<ReceivedReceipt, AdapterErrorMock> {
let receipt_storage =
self.receipt_storage
.read()
.map_err(|e| Self::AdapterError::AdapterError {
.map_err(|e| AdapterErrorMock::AdapterError {
error: e.to_string(),
})?;

receipt_storage
.get(&receipt_id)
.cloned()
.ok_or(AdpaterErrorMock::AdapterError {
.ok_or(AdapterErrorMock::AdapterError {
error: "No receipt found with ID".to_owned(),
})
}
fn retrieve_receipts_by_timestamp(
pub fn retrieve_receipts_by_timestamp(
&self,
timestamp_ns: u64,
) -> Result<Vec<(u64, ReceivedReceipt)>, Self::AdapterError> {
) -> Result<Vec<(u64, ReceivedReceipt)>, AdapterErrorMock> {
let receipt_storage =
self.receipt_storage
.read()
.map_err(|e| Self::AdapterError::AdapterError {
.map_err(|e| AdapterErrorMock::AdapterError {
error: e.to_string(),
})?;
Ok(receipt_storage
Expand All @@ -82,12 +59,55 @@ impl ReceiptStorageAdapter for ReceiptStorageAdapterMock {
.map(|(&id, rx_receipt)| (id, rx_receipt.clone()))
.collect())
}
fn retrieve_receipts_upto_timestamp(
pub fn retrieve_receipts_upto_timestamp(
&self,
timestamp_ns: u64,
) -> Result<Vec<(u64, ReceivedReceipt)>, Self::AdapterError> {
) -> Result<Vec<(u64, ReceivedReceipt)>, AdapterErrorMock> {
self.retrieve_receipts_in_timestamp_range(..=timestamp_ns)
}
pub fn remove_receipt_by_id(&mut self, receipt_id: u64) -> Result<(), AdapterErrorMock> {
let mut receipt_storage =
self.receipt_storage
.write()
.map_err(|e| AdapterErrorMock::AdapterError {
error: e.to_string(),
})?;
receipt_storage
.remove(&receipt_id)
.map(|_| ())
.ok_or(AdapterErrorMock::AdapterError {
error: "No receipt found with ID".to_owned(),
})
}
pub fn remove_receipts_by_ids(&mut self, receipt_ids: &[u64]) -> Result<(), AdapterErrorMock> {
for receipt_id in receipt_ids {
self.remove_receipt_by_id(*receipt_id)?;
}
Ok(())
}
}

use thiserror::Error;
#[derive(Debug, Error)]
pub enum AdapterErrorMock {
#[error("something went wrong: {error}")]
AdapterError { error: String },
}

impl ReceiptStorageAdapter for ReceiptStorageAdapterMock {
type AdapterError = AdapterErrorMock;
fn store_receipt(&mut self, receipt: ReceivedReceipt) -> Result<u64, Self::AdapterError> {
let id = self.unique_id;
let mut receipt_storage =
self.receipt_storage
.write()
.map_err(|e| Self::AdapterError::AdapterError {
error: e.to_string(),
})?;
receipt_storage.insert(id, receipt);
self.unique_id += 1;
Ok(id)
}
fn retrieve_receipts_in_timestamp_range<R: RangeBounds<u64>>(
&self,
timestamp_range_ns: R,
Expand Down Expand Up @@ -119,7 +139,7 @@ impl ReceiptStorageAdapter for ReceiptStorageAdapterMock {
})?;

if !receipt_storage.contains_key(&receipt_id) {
return Err(AdpaterErrorMock::AdapterError {
return Err(AdapterErrorMock::AdapterError {
error: "Invalid receipt_id".to_owned(),
});
};
Expand All @@ -128,26 +148,6 @@ impl ReceiptStorageAdapter for ReceiptStorageAdapterMock {
self.unique_id += 1;
Ok(())
}
fn remove_receipt_by_id(&mut self, receipt_id: u64) -> Result<(), Self::AdapterError> {
let mut receipt_storage =
self.receipt_storage
.write()
.map_err(|e| Self::AdapterError::AdapterError {
error: e.to_string(),
})?;
receipt_storage
.remove(&receipt_id)
.map(|_| ())
.ok_or(AdpaterErrorMock::AdapterError {
error: "No receipt found with ID".to_owned(),
})
}
fn remove_receipts_by_ids(&mut self, receipt_ids: &[u64]) -> Result<(), Self::AdapterError> {
for receipt_id in receipt_ids {
self.remove_receipt_by_id(*receipt_id)?;
}
Ok(())
}
fn remove_receipts_in_timestamp_range<R: RangeBounds<u64>>(
&mut self,
timestamp_ns: R,
Expand Down

0 comments on commit a24e1bc

Please sign in to comment.