Skip to content

Commit

Permalink
feat(cli): allow to search datasets by dataset shortcut
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-aksamentov committed Dec 7, 2023
1 parent c4b71eb commit 01ad91b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
9 changes: 1 addition & 8 deletions packages_rs/nextclade-cli/src/cli/nextclade_dataset_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,7 @@ pub fn nextclade_dataset_list(
})
.filter(|dataset| {
if let Some(search) = &search {
[
Some(dataset.path.as_str()),
dataset.name(),
dataset.ref_name(),
dataset.ref_accession(),
]
.iter()
.any(|candidate| candidate.unwrap_or_default().contains(search))
dataset.search_strings().any(|candidate| candidate.contains(search))
} else {
true
}
Expand Down
16 changes: 15 additions & 1 deletion packages_rs/nextclade/src/io/dataset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use crate::io::schema_version::{SchemaVersion, SchemaVersionParams};
use crate::o;
use crate::utils::any::AnyType;
use eyre::Report;
use itertools::Itertools;
use itertools::{chain, Itertools};
use schemars::JsonSchema;
use semver::Version;
use serde::{Deserialize, Serialize};
Expand Down Expand Up @@ -86,6 +86,20 @@ impl Dataset {
self.attributes.get("name").and_then(AnyType::as_str_maybe)
}

pub fn search_strings(&self) -> impl Iterator<Item = &str> {
let names = [
Some(self.path.as_str()),
self.name(),
self.ref_name(),
self.ref_accession(),
]
.into_iter()
.flatten();

let shortcuts = self.shortcuts.iter().map(String::as_str);

chain!(names, shortcuts)
}
pub fn ref_name(&self) -> Option<&str> {
self.attributes.get("reference name").and_then(AnyType::as_str_maybe)
}
Expand Down

0 comments on commit 01ad91b

Please sign in to comment.