|
|
@@ -74,12 +74,8 @@ pub trait Database: Debug {
|
|
|
/// Remove melt quote from storage
|
|
|
async fn remove_melt_quote(&self, quote_id: &str) -> Result<(), Self::Err>;
|
|
|
|
|
|
- /// Add [`Keys`] to storage
|
|
|
- async fn add_keys(&self, keyset: KeySet) -> Result<(), Self::Err>;
|
|
|
/// Get [`Keys`] from storage
|
|
|
async fn get_keys(&self, id: &Id) -> Result<Option<Keys>, Self::Err>;
|
|
|
- /// Remove [`Keys`] from storage
|
|
|
- async fn remove_keys(&self, id: &Id) -> Result<(), Self::Err>;
|
|
|
|
|
|
/// Update the proofs in storage by adding new proofs or removing proofs by
|
|
|
/// their Y value.
|
|
|
@@ -88,6 +84,7 @@ pub trait Database: Debug {
|
|
|
added: Vec<ProofInfo>,
|
|
|
removed_ys: Vec<PublicKey>,
|
|
|
) -> Result<(), Self::Err>;
|
|
|
+
|
|
|
/// Get proofs from storage
|
|
|
async fn get_proofs(
|
|
|
&self,
|
|
|
@@ -96,6 +93,7 @@ pub trait Database: Debug {
|
|
|
state: Option<Vec<State>>,
|
|
|
spending_conditions: Option<Vec<SpendingConditions>>,
|
|
|
) -> Result<Vec<ProofInfo>, Self::Err>;
|
|
|
+
|
|
|
/// Get balance
|
|
|
async fn get_balance(
|
|
|
&self,
|
|
|
@@ -103,19 +101,13 @@ pub trait Database: Debug {
|
|
|
unit: Option<CurrencyUnit>,
|
|
|
state: Option<Vec<State>>,
|
|
|
) -> Result<u64, Self::Err>;
|
|
|
- /// Update proofs state in storage
|
|
|
- async fn update_proofs_state(&self, ys: Vec<PublicKey>, state: State) -> Result<(), Self::Err>;
|
|
|
|
|
|
- /// Atomically increment Keyset counter and return new value
|
|
|
- async fn increment_keyset_counter(&self, keyset_id: &Id, count: u32) -> Result<u32, Self::Err>;
|
|
|
-
|
|
|
- /// Add transaction to storage
|
|
|
- async fn add_transaction(&self, transaction: Transaction) -> Result<(), Self::Err>;
|
|
|
/// Get transaction from storage
|
|
|
async fn get_transaction(
|
|
|
&self,
|
|
|
transaction_id: TransactionId,
|
|
|
) -> Result<Option<Transaction>, Self::Err>;
|
|
|
+
|
|
|
/// List transactions from storage
|
|
|
async fn list_transactions(
|
|
|
&self,
|
|
|
@@ -123,6 +115,27 @@ pub trait Database: Debug {
|
|
|
direction: Option<TransactionDirection>,
|
|
|
unit: Option<CurrencyUnit>,
|
|
|
) -> Result<Vec<Transaction>, Self::Err>;
|
|
|
+}
|
|
|
+
|
|
|
+/// Database transactions
|
|
|
+///
|
|
|
+/// All writes are lead in here
|
|
|
+pub trait DatabaseTransaction<'a, Error>: Debug {
|
|
|
/// Remove transaction from storage
|
|
|
- async fn remove_transaction(&self, transaction_id: TransactionId) -> Result<(), Self::Err>;
|
|
|
+ async fn remove_transaction(&mut self, transaction_id: TransactionId) -> Result<(), Error>;
|
|
|
+
|
|
|
+ /// Add transaction to storage
|
|
|
+ async fn add_transaction(&mut self, transaction: Transaction) -> Result<(), Error>;
|
|
|
+
|
|
|
+ /// Update proofs state in storage
|
|
|
+ async fn update_proofs_state(&mut self, ys: Vec<PublicKey>, state: State) -> Result<(), Error>;
|
|
|
+
|
|
|
+ /// Atomically increment Keyset counter and return new value
|
|
|
+ async fn increment_keyset_counter(&mut self, keyset_id: &Id, count: u32) -> Result<u32, Error>;
|
|
|
+
|
|
|
+ /// Remove [`Keys`] from storage
|
|
|
+ async fn remove_keys(&mut self, id: &Id) -> Result<(), Error>;
|
|
|
+
|
|
|
+ /// Add [`Keys`] to storage
|
|
|
+ async fn add_keys(&mut self, keyset: KeySet) -> Result<(), Error>;
|
|
|
}
|