diff --git a/crates/cli/commands/src/db/list.rs b/crates/cli/commands/src/db/list.rs index 452fcf0a78..8e3db03fb7 100644 --- a/crates/cli/commands/src/db/list.rs +++ b/crates/cli/commands/src/db/list.rs @@ -61,19 +61,21 @@ impl Command { } /// Generate [`ListFilter`] from command. - pub fn list_filter(&self) -> ListFilter { - let search = self - .search - .as_ref() - .map(|search| { + pub fn list_filter(&self) -> eyre::Result { + let search = match self.search.as_deref() { + Some(search) => { if let Some(search) = search.strip_prefix("0x") { - return hex::decode(search).unwrap() + hex::decode(search).wrap_err( + "Invalid hex content after 0x prefix in --search (expected valid hex like 0xdeadbeef).", + )? + } else { + search.as_bytes().to_vec() } - search.as_bytes().to_vec() - }) - .unwrap_or_default(); + } + None => Vec::new(), + }; - ListFilter { + Ok(ListFilter { skip: self.skip, len: self.len, search, @@ -82,7 +84,7 @@ impl Command { min_value_size: self.min_value_size, reverse: self.reverse, only_count: self.count, - } + }) } } @@ -115,7 +117,7 @@ impl TableViewer<()> for ListTableViewer<'_, N> { } - let list_filter = self.args.list_filter(); + let list_filter = self.args.list_filter()?; if self.args.json || self.args.count { let (list, count) = self.tool.list::(&list_filter)?;