From 4b01b74f969fa8db2cf2c2ed32e40e8186c6a34e Mon Sep 17 00:00:00 2001 From: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Date: Mon, 28 Nov 2022 10:17:54 -0700 Subject: [PATCH] fuck it: no locks (#56) --- patch-db/src/model.rs | 43 ++++++------------------------------------- 1 file changed, 6 insertions(+), 37 deletions(-) diff --git a/patch-db/src/model.rs b/patch-db/src/model.rs index 6824804..71727e0 100644 --- a/patch-db/src/model.rs +++ b/patch-db/src/model.rs @@ -77,15 +77,11 @@ where Ok(db.lock(self.json_ptr().clone().into(), lock_type).await?) } - pub async fn get(&self, db: &mut Db, lock: bool) -> Result, Error> { - if lock { - self.lock(db, LockType::Read).await?; - } + pub async fn get(&self, db: &mut Db) -> Result, Error> { Ok(ModelData(db.get(self.json_ptr()).await?)) } pub async fn get_mut(&self, db: &mut Db) -> Result, Error> { - self.lock(db, LockType::Write).await?; let original = db.get_value(self.json_ptr(), None).await?; let current = serde_json::from_value(original.clone())?; Ok(ModelDataMut { @@ -154,7 +150,6 @@ where db: &mut Db, value: &T, ) -> Result>, Error> { - self.lock(db, LockType::Write).await?; db.put(self.json_ptr(), value).await } } @@ -323,14 +318,7 @@ impl Deserialize<'de>> OptionModel { Ok(db.lock(self.0.as_ref().clone().into(), lock_type).await?) } - pub async fn get( - &self, - db: &mut Db, - lock: bool, - ) -> Result>, Error> { - if lock { - self.lock(db, LockType::Read).await?; - } + pub async fn get(&self, db: &mut Db) -> Result>, Error> { Ok(ModelData(db.get(self.0.as_ref()).await?)) } @@ -338,7 +326,6 @@ impl Deserialize<'de>> OptionModel { &self, db: &mut Db, ) -> Result>, Error> { - self.lock(db, LockType::Write).await?; let original = db.get_value(self.0.as_ref(), None).await?; let current = serde_json::from_value(original.clone())?; Ok(ModelDataMut { @@ -348,11 +335,7 @@ impl Deserialize<'de>> OptionModel { }) } - pub async fn exists(&self, db: &mut Db, lock: bool) -> Result { - if lock { - db.lock(self.0.as_ref().clone().into(), LockType::Exist) - .await?; - } + pub async fn exists(&self, db: &mut Db) -> Result { Ok(db.exists(self.as_ref(), None).await) } @@ -377,8 +360,6 @@ impl Deserialize<'de>> OptionModel { } pub async fn delete(&self, db: &mut Db) -> Result>, Error> { - db.lock(self.as_ref().clone().into(), LockType::Write) - .await?; db.put(self.as_ref(), &Value::Null).await } } @@ -407,7 +388,7 @@ where T::Model: DerefMut>, { pub async fn check(self, db: &mut Db) -> Result, Error> { - Ok(if self.exists(db, true).await? { + Ok(if self.exists(db).await? { Some(self.0) } else { None @@ -415,7 +396,7 @@ where } pub async fn expect(self, db: &mut Db) -> Result { - if self.exists(db, true).await? { + if self.exists(db).await? { Ok(self.0) } else { Err(Error::NodeDoesNotExist(self.0.into())) @@ -431,8 +412,6 @@ where db: &mut Db, value: &T, ) -> Result>, Error> { - db.lock(self.as_ref().clone().into(), LockType::Write) - .await?; db.put(self.as_ref(), value).await } } @@ -617,15 +596,7 @@ where T::Key: Ord + Eq + for<'de> Deserialize<'de>, T::Value: Serialize + for<'de> Deserialize<'de>, { - pub async fn keys( - &self, - db: &mut Db, - lock: bool, - ) -> Result, Error> { - if lock { - db.lock(self.json_ptr().clone().into(), LockType::Exist) - .await?; - } + pub async fn keys(&self, db: &mut Db) -> Result, Error> { let set = db.keys(self.json_ptr(), None).await; Ok(set .into_iter() @@ -633,8 +604,6 @@ where .collect::>()?) } pub async fn remove(&self, db: &mut Db, key: &T::Key) -> Result<(), Error> { - db.lock(self.as_ref().clone().into(), LockType::Write) - .await?; if db.exists(self.clone().idx(key).as_ref(), None).await { db.apply( DiffPatch(Patch(vec![PatchOperation::Remove(RemoveOperation {