From df292a85d30207bff4416a57fe6efa3019267ca0 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Mon, 24 May 2021 17:13:51 -0600 Subject: [PATCH] switch to indexmap --- patch-db/Cargo.toml | 2 +- patch-db/src/handle.rs | 8 ++++---- patch-db/src/model.rs | 4 ++-- patch-db/src/patch.rs | 4 ++-- patch-db/src/store.rs | 8 ++++---- patch-db/src/transaction.rs | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/patch-db/Cargo.toml b/patch-db/Cargo.toml index d637d55..d7148ae 100644 --- a/patch-db/Cargo.toml +++ b/patch-db/Cargo.toml @@ -16,7 +16,7 @@ version = "0.1.0" async-trait = "0.1.42" fd-lock-rs = "0.1.3" futures = "0.3.8" -hashlink = "0.6.0" +indexmap = "1.6.2" json-patch = { path = "../json-patch" } json-ptr = { path = "../json-ptr" } lazy_static = "1.4.0" diff --git a/patch-db/src/handle.rs b/patch-db/src/handle.rs index d64484f..cf03670 100644 --- a/patch-db/src/handle.rs +++ b/patch-db/src/handle.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use async_trait::async_trait; -use hashlink::LinkedHashSet; +use indexmap::IndexSet; use json_ptr::{JsonPointer, SegList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -29,7 +29,7 @@ pub trait DbHandle: Sized + Send + Sync { &mut self, ptr: &JsonPointer, store_read_lock: Option>, - ) -> Result, Error>; + ) -> Result, Error>; async fn get_value + Send + Sync, V: SegList + Send + Sync>( &mut self, ptr: &JsonPointer, @@ -103,7 +103,7 @@ impl DbHandle for &mut Handle { &mut self, ptr: &JsonPointer, store_read_lock: Option>, - ) -> Result, Error> { + ) -> Result, Error> { (*self).keys(ptr, store_read_lock).await } async fn get_value + Send + Sync, V: SegList + Send + Sync>( @@ -195,7 +195,7 @@ impl DbHandle for PatchDbHandle { &mut self, ptr: &JsonPointer, store_read_lock: Option>, - ) -> Result, Error> { + ) -> Result, Error> { if let Some(lock) = store_read_lock { lock.keys(ptr) } else { diff --git a/patch-db/src/model.rs b/patch-db/src/model.rs index b0f2301..202ce3b 100644 --- a/patch-db/src/model.rs +++ b/patch-db/src/model.rs @@ -3,7 +3,7 @@ use std::hash::Hash; use std::marker::PhantomData; use std::ops::{Deref, DerefMut}; -use hashlink::LinkedHashSet; +use indexmap::IndexSet; use json_ptr::JsonPointer; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -425,7 +425,7 @@ where T::Key: Hash + Eq + for<'de> Deserialize<'de>, T::Value: Serialize + for<'de> Deserialize<'de>, { - pub async fn keys(&self, db: &mut Db) -> Result, Error> { + pub async fn keys(&self, db: &mut Db) -> Result, Error> { db.lock(self.as_ref(), LockType::Read).await; let set = db.keys(self.as_ref(), None).await?; Ok(set diff --git a/patch-db/src/patch.rs b/patch-db/src/patch.rs index e5e16da..cb2f359 100644 --- a/patch-db/src/patch.rs +++ b/patch-db/src/patch.rs @@ -1,6 +1,6 @@ use std::ops::Deref; -use hashlink::LinkedHashSet; +use indexmap::IndexSet; use json_patch::{AddOperation, Patch, PatchOperation, RemoveOperation, ReplaceOperation}; use json_ptr::{JsonPointer, SegList}; use serde::{Deserialize, Serialize}; @@ -178,7 +178,7 @@ impl DiffPatch { res } - pub fn keys(&self, mut keys: LinkedHashSet) -> LinkedHashSet { + pub fn keys(&self, mut keys: IndexSet) -> IndexSet { for op in &(self.0).0 { match op { PatchOperation::Add(a) => { diff --git a/patch-db/src/store.rs b/patch-db/src/store.rs index fd69604..f92aa42 100644 --- a/patch-db/src/store.rs +++ b/patch-db/src/store.rs @@ -5,7 +5,7 @@ use std::path::{Path, PathBuf}; use std::sync::Arc; use fd_lock_rs::FdLock; -use hashlink::LinkedHashSet; +use indexmap::IndexSet; use json_ptr::{JsonPointer, SegList}; use lazy_static::lazy_static; use qutex_2::{Guard, Qutex}; @@ -132,10 +132,10 @@ impl Store { pub(crate) fn keys, V: SegList>( &self, ptr: &JsonPointer, - ) -> Result, Error> { + ) -> Result, Error> { Ok(match ptr.get(self.get_data()?).unwrap_or(&Value::Null) { Value::Object(o) => o.keys().cloned().collect(), - _ => LinkedHashSet::new(), + _ => IndexSet::new(), }) } pub(crate) fn get Deserialize<'de>, S: AsRef, V: SegList>( @@ -226,7 +226,7 @@ impl PatchDb { pub async fn keys, V: SegList>( &self, ptr: &JsonPointer, - ) -> Result, Error> { + ) -> Result, Error> { self.store.read().await.keys(ptr) } pub async fn get Deserialize<'de>, S: AsRef, V: SegList>( diff --git a/patch-db/src/transaction.rs b/patch-db/src/transaction.rs index 3f146e5..6b91a36 100644 --- a/patch-db/src/transaction.rs +++ b/patch-db/src/transaction.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use async_trait::async_trait; -use hashlink::LinkedHashSet; +use indexmap::IndexSet; use json_ptr::{JsonPointer, SegList}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -110,7 +110,7 @@ impl DbHandle for Transaction { &mut self, ptr: &JsonPointer, store_read_lock: Option>, - ) -> Result, Error> { + ) -> Result, Error> { let keys = { let store_lock = self.parent.store(); let store = if let Some(store_read_lock) = store_read_lock {