/*
* The purpose of this file is to intercept search parameters before they are passed to the API. It's necessary
* as links which were generated on the old system may appear in old (or not so old) papers, on other sites etc.
* If anyone complains they've clicked on a link to FAIRsharing that "doesn't work" then it may be found to be one
* of these, and might perhaps require the specific terms be added to the lookup tables here.
* Unfortunately it seems difficult to test and results in:
* Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Timeout
*/
/**
* Convert a prop from the old system into that used by the new. Useful when old search links
* have been deployed elsewhere in the internet or in print (as long as we know about them).
* @returns String - new form of the old prop
*/
export function hackSearch(query) {
let modified = false;
const lookupKeys = {
content: 'fairsharingRegistry'
};
const lookupValues = {
biodbcore: 'database'
}
Object.keys(query).forEach(function(key) {
let value = query[key];
// Delete keys with empty values.
if (!value) {
delete query[key];
modified = true;
}
// This key is no longer used in the system:
if (key === 'search_state') {
delete query[key];
modified = true;
}
// The key is outdated and needs to be replaced with the latest.
if (Object.keys(lookupKeys).includes(key)) {
let newKey = lookupKeys[key];
if (Object.keys(lookupValues).includes(value)) {
query[newKey] = lookupValues[value];
}
else {
query[newKey] = value;
}
// Delete old key.
delete query[key];
modified = true;
}
// The key's OK but the value may need replacing.
else {
if (Object.keys(lookupValues).includes(value)) {
query[key] = lookupValues[value];
modified = true;
}
else {
modified = false;
}
}
});
return [query, modified];
}
/*
Fixed:
https://fairsharing.org/search/?q=genomics&content=biodbcore
https://fairsharing.org/search/?q=transcriptomics&content=biodbcore
https://fairsharing.org/search/?q=genomics&content=standard&name=&taxonomies=&organisations=&shortname=&description=&supportlinks=&licenses=&countries=&maintainers=&expanded_onto_domains=&expanded_onto_disciplines=&user_defined_tags=&record_id=&miriam_id=&search_state=hidden
https://fairsharing.org/search/?q=proteomics&content=biodbcore&name=&taxonomies=&organisations=&shortname=&description=&supportlinks=&licenses=&countries=&maintainers=&expanded_onto_domains=&expanded_onto_disciplines=&user_defined_tags=&record_id=&miriam_id=&search_state=hidden
https://fairsharing.org/search/?q=proteomics&content=standard&name=&taxonomies=&organisations=&shortname=&description=&supportlinks=&licenses=&countries=&maintainers=&expanded_onto_domains=&expanded_onto_disciplines=&user_defined_tags=&record_id=&miriam_id=&search_state=hidden
https://fairsharing.org/search/?q=metabolomics&content=biodbcore&name=&taxonomies=&organisations=&shortname=&description=&supportlinks=&licenses=&countries=&maintainers=&expanded_onto_domains=&expanded_onto_disciplines=&user_defined_tags=&record_id=&miriam_id=&search_state=hidden
https://fairsharing.org/search/?q=metabolomics&content=standard&name=&taxonomies=&organisations=&shortname=&description=&supportlinks=&licenses=&countries=&maintainers=&expanded_onto_domains=&expanded_onto_disciplines=&user_defined_tags=&record_id=&miriam_id=&search_state=hidden
Covered by something else:
https://fairsharing.org/standards/?q=transcriptomics
*/