UNPKG

@rcsb/rcsb-saguaro-app

Version:
115 lines 5.63 kB
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