diff options
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/helper/bucket.rs | 3 | ||||
-rw-r--r-- | src/model/key_table.rs | 9 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/model/helper/bucket.rs b/src/model/helper/bucket.rs index bb4b5b24..8bc54b3f 100644 --- a/src/model/helper/bucket.rs +++ b/src/model/helper/bucket.rs @@ -116,12 +116,11 @@ impl<'a> BucketHelper<'a> { .get_range( &EmptyKey, None, - Some(KeyFilter::Matches(pattern.to_string())), + Some(KeyFilter::MatchesAndNotDeleted(pattern.to_string())), 10, ) .await? .into_iter() - .filter(|k| !k.state.is_deleted()) .collect::<Vec<_>>(); if candidates.len() != 1 { Err(Error::BadRequest(format!( diff --git a/src/model/key_table.rs b/src/model/key_table.rs index daea5473..7afa0337 100644 --- a/src/model/key_table.rs +++ b/src/model/key_table.rs @@ -152,7 +152,7 @@ pub struct KeyTable; #[derive(Clone, Debug, Serialize, Deserialize)] pub enum KeyFilter { Deleted(DeletedFilter), - Matches(String), + MatchesAndNotDeleted(String), } impl TableSchema for KeyTable { @@ -166,10 +166,11 @@ impl TableSchema for KeyTable { fn matches_filter(entry: &Self::E, filter: &Self::Filter) -> bool { match filter { KeyFilter::Deleted(df) => df.apply(entry.state.is_deleted()), - KeyFilter::Matches(pat) => { + KeyFilter::MatchesAndNotDeleted(pat) => { let pat = pat.to_lowercase(); - entry.key_id.to_lowercase().starts_with(&pat) - || entry.name.get().to_lowercase() == pat + !entry.state.is_deleted() + && (entry.key_id.to_lowercase().starts_with(&pat) + || entry.name.get().to_lowercase() == pat) } } } |