diff --git a/packages_rs/nextclade-cli/src/dataset/dataset_download.rs b/packages_rs/nextclade-cli/src/dataset/dataset_download.rs index fe9920f5c..368b59927 100644 --- a/packages_rs/nextclade-cli/src/dataset/dataset_download.rs +++ b/packages_rs/nextclade-cli/src/dataset/dataset_download.rs @@ -220,6 +220,7 @@ pub fn dataset_individual_files_load( VirusProperties { schema_version: "".to_owned(), attributes: BTreeMap::default(), + shortcuts: vec![], meta: DatasetMeta::default(), files: DatasetFiles { reference: "".to_owned(), diff --git a/packages_rs/nextclade-web/src/io/fetchDatasetsIndex.ts b/packages_rs/nextclade-web/src/io/fetchDatasetsIndex.ts index fdd6e7b05..fd77edf0a 100644 --- a/packages_rs/nextclade-web/src/io/fetchDatasetsIndex.ts +++ b/packages_rs/nextclade-web/src/io/fetchDatasetsIndex.ts @@ -1,5 +1,5 @@ import { AxiosError } from 'axios' -import { get, head, mapValues, sortBy, sortedUniq } from 'lodash' +import { get, head, isNil, mapValues, sortBy, sortedUniq } from 'lodash' import semver from 'semver' import { takeFirstMaybe } from 'src/helpers/takeFirstMaybe' import urljoin from 'url-join' @@ -47,7 +47,7 @@ export function findDataset(datasets: Dataset[], name?: string, tag?: string) { /** Find the datasets given name, ref and tag */ export function filterDatasets(datasets: Dataset[], name?: string, tag?: string) { return datasets.filter((dataset) => { - let isMatch = dataset.path === name + let isMatch = !isNil(name) && (dataset.path === name || !!dataset.shortcuts?.includes(name)) if (tag) { isMatch = isMatch && dataset.version?.tag === tag diff --git a/packages_rs/nextclade/src/analyze/virus_properties.rs b/packages_rs/nextclade/src/analyze/virus_properties.rs index 77d31dce3..82d2b538e 100644 --- a/packages_rs/nextclade/src/analyze/virus_properties.rs +++ b/packages_rs/nextclade/src/analyze/virus_properties.rs @@ -33,6 +33,9 @@ pub struct VirusProperties { #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] pub attributes: BTreeMap, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub shortcuts: Vec, + #[serde(default, skip_serializing_if = "DatasetMeta::is_default")] pub meta: DatasetMeta, diff --git a/packages_rs/nextclade/src/io/dataset.rs b/packages_rs/nextclade/src/io/dataset.rs index e1cc3c645..9d9ee48a3 100644 --- a/packages_rs/nextclade/src/io/dataset.rs +++ b/packages_rs/nextclade/src/io/dataset.rs @@ -57,6 +57,9 @@ pub struct DatasetCollection { pub struct Dataset { pub path: String, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub shortcuts: Vec, + #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] pub attributes: BTreeMap,