diff --git a/patch-db/src/transaction.rs b/patch-db/src/transaction.rs index f8679d8..f0bf63e 100644 --- a/patch-db/src/transaction.rs +++ b/patch-db/src/transaction.rs @@ -27,16 +27,23 @@ pub struct Transaction { pub(crate) sub: Receiver>, } impl Transaction<&mut PatchDbHandle> { - pub async fn commit(mut self, expire_id: Option) -> Result, Error> { - let store_lock = self.parent.store(); - let store = store_lock.write().await; - self.rebase()?; - let rev = self - .parent - .db - .apply(self.updates, expire_id, Some(store)) - .await?; - Ok(rev) + pub async fn commit( + mut self, + expire_id: Option, + ) -> Result>, Error> { + if (self.updates.0).0.is_empty() && expire_id.is_none() { + Ok(None) + } else { + let store_lock = self.parent.store(); + let store = store_lock.write().await; + self.rebase()?; + let rev = self + .parent + .db + .apply(self.updates, expire_id, Some(store)) + .await?; + Ok(Some(rev)) + } } pub async fn abort(mut self) -> Result { let store_lock = self.parent.store();