From 0d0f74c1197b0460ea09356a8455570a30a81c18 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Wed, 1 Sep 2021 16:14:18 -0600 Subject: [PATCH] allow empty commit without revision --- patch-db/src/transaction.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) 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();