@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
115 lines • 5.63 kB
JavaScript
import { LogicalOperator, RelevanceScoreRankingOption, ScoringStrategy, Service, SortDirection, Type } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums";
import { RcsbSearchMetadata } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchMetadata";
import { cloneDeep } from 'lodash';
import { GroupProvenanceId } from "@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums";
import { buildAttributeQuery, buildRequestFromCombinedSearchQuery, buildRequestFromSearchQuery } from "@rcsb/rcsb-search-tools/lib/SearchQueryTools/SearchQueryTools";
import { depositionGroupFacetStore } from "./FacetStore/DepositionGroupFacetStore";
import { sequenceGroupFacetStore } from "./FacetStore/SequenceGroupFacetStore";
import { uniprotGroupFacetStore } from "./FacetStore/UniprotGroupFacetStore";
export var SearchQueryTools;
(function (SearchQueryTools) {
function searchGroupQuery(groupProvenance, groupId, service) {
const groupSearchAttr = getSearchAttribute(groupProvenance);
return buildAttributeQuery({
attribute: groupSearchAttr.path,
value: groupId,
operator: groupSearchAttr.operator.ExactMatch,
service: service !== null && service !== void 0 ? service : Service.Text
});
}
SearchQueryTools.searchGroupQuery = searchGroupQuery;
function addGroupNodeToSearchQuery(groupProvenanceId, groupId, searchQuery, service) {
return addNodeToSearchQuery(searchGroupQuery(groupProvenanceId, groupId, service), searchQuery);
}
SearchQueryTools.addGroupNodeToSearchQuery = addGroupNodeToSearchQuery;
function buildNodeSearchQuery(node, searchQuery, returnType, resultsContentType, logicalOperator = LogicalOperator.And) {
return buildRequestFromCombinedSearchQuery(searchQuery, node, returnType, logicalOperator, {
paginate: {
start: 0,
rows: 25
},
scoring_strategy: ScoringStrategy.Combined,
sort: [
{
sort_by: RelevanceScoreRankingOption.Score,
direction: SortDirection.Desc
}
],
results_content_type: resultsContentType
});
}
SearchQueryTools.buildNodeSearchQuery = buildNodeSearchQuery;
function buildSearchQuery(searchQuery, returnType) {
return buildRequestFromSearchQuery(searchQuery, returnType, {
paginate: {
start: 0,
rows: 25
},
scoring_strategy: ScoringStrategy.Combined,
sort: [
{
sort_by: RelevanceScoreRankingOption.Score,
direction: SortDirection.Desc
}
]
});
}
SearchQueryTools.buildSearchQuery = buildSearchQuery;
function addNewNodeToAttributeSearchQuery(attribute, value, operator, searchQuery, service, negation = false) {
return addNodeToSearchQuery(searchAttributeQuery(attribute, value, operator, service, negation), searchQuery);
}
SearchQueryTools.addNewNodeToAttributeSearchQuery = addNewNodeToAttributeSearchQuery;
function searchAttributeQuery(attribute, value, operator, service, negation = false) {
return buildAttributeQuery({
attribute,
value,
operator,
service,
negation
});
}
SearchQueryTools.searchAttributeQuery = searchAttributeQuery;
function addNodeToSearchQuery(node, searchQuery, logicalOperator = LogicalOperator.And) {
if (searchQuery.type === Type.Group && searchQuery.logical_operator === logicalOperator) {
const query = cloneDeep(searchQuery);
query.nodes.push(node);
return query;
}
return {
type: Type.Group,
logical_operator: logicalOperator,
nodes: [
searchQuery,
node
]
};
}
SearchQueryTools.addNodeToSearchQuery = addNodeToSearchQuery;
function getFacetStoreFromGroupProvenance(groupProvenanceId) {
switch (groupProvenanceId) {
case GroupProvenanceId.ProvenanceMatchingDepositGroupId:
return depositionGroupFacetStore;
case GroupProvenanceId.ProvenanceSequenceIdentity:
return sequenceGroupFacetStore;
case GroupProvenanceId.ProvenanceMatchingUniprotAccession:
return uniprotGroupFacetStore;
}
}
SearchQueryTools.getFacetStoreFromGroupProvenance = getFacetStoreFromGroupProvenance;
function searchContentType(searchQuery) {
var _a, _b;
return (_b = (_a = searchQuery === null || searchQuery === void 0 ? void 0 : searchQuery.request_options) === null || _a === void 0 ? void 0 : _a.results_content_type) !== null && _b !== void 0 ? _b : ["computational", "experimental"];
}
SearchQueryTools.searchContentType = searchContentType;
function getSearchAttribute(groupProvenanceId) {
switch (groupProvenanceId) {
case GroupProvenanceId.ProvenanceMatchingDepositGroupId:
return RcsbSearchMetadata.RcsbEntryGroupMembership.GroupId;
case GroupProvenanceId.ProvenanceSequenceIdentity:
return RcsbSearchMetadata.RcsbPolymerEntityGroupMembership.GroupId;
case GroupProvenanceId.ProvenanceMatchingUniprotAccession:
return RcsbSearchMetadata.RcsbPolymerEntityGroupMembership.GroupId;
}
}
})(SearchQueryTools || (SearchQueryTools = {}));
//# sourceMappingURL=SearchQueryTools.js.map