UNPKG

@rcsb/rcsb-saguaro-app

Version:
118 lines (117 loc) 6.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchQueryTools = void 0; const SearchEnums_1 = require("@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums"); const SearchMetadata_1 = require("@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchMetadata"); const lodash_1 = require("lodash"); const DwEnums_1 = require("@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums"); const SearchQueryTools_1 = require("@rcsb/rcsb-search-tools/lib/SearchQueryTools/SearchQueryTools"); const DepositionGroupFacetStore_1 = require("./FacetStore/DepositionGroupFacetStore"); const SequenceGroupFacetStore_1 = require("./FacetStore/SequenceGroupFacetStore"); const UniprotGroupFacetStore_1 = require("./FacetStore/UniprotGroupFacetStore"); var SearchQueryTools; (function (SearchQueryTools) { function searchGroupQuery(groupProvenance, groupId, service) { const groupSearchAttr = getSearchAttribute(groupProvenance); return (0, SearchQueryTools_1.buildAttributeQuery)({ attribute: groupSearchAttr.path, value: groupId, operator: groupSearchAttr.operator.ExactMatch, service: service !== null && service !== void 0 ? service : SearchEnums_1.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 = SearchEnums_1.LogicalOperator.And) { return (0, SearchQueryTools_1.buildRequestFromCombinedSearchQuery)(searchQuery, node, returnType, logicalOperator, { paginate: { start: 0, rows: 25 }, scoring_strategy: SearchEnums_1.ScoringStrategy.Combined, sort: [ { sort_by: SearchEnums_1.RelevanceScoreRankingOption.Score, direction: SearchEnums_1.SortDirection.Desc } ], results_content_type: resultsContentType }); } SearchQueryTools.buildNodeSearchQuery = buildNodeSearchQuery; function buildSearchQuery(searchQuery, returnType) { return (0, SearchQueryTools_1.buildRequestFromSearchQuery)(searchQuery, returnType, { paginate: { start: 0, rows: 25 }, scoring_strategy: SearchEnums_1.ScoringStrategy.Combined, sort: [ { sort_by: SearchEnums_1.RelevanceScoreRankingOption.Score, direction: SearchEnums_1.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 (0, SearchQueryTools_1.buildAttributeQuery)({ attribute, value, operator, service, negation }); } SearchQueryTools.searchAttributeQuery = searchAttributeQuery; function addNodeToSearchQuery(node, searchQuery, logicalOperator = SearchEnums_1.LogicalOperator.And) { if (searchQuery.type === SearchEnums_1.Type.Group && searchQuery.logical_operator === logicalOperator) { const query = (0, lodash_1.cloneDeep)(searchQuery); query.nodes.push(node); return query; } return { type: SearchEnums_1.Type.Group, logical_operator: logicalOperator, nodes: [ searchQuery, node ] }; } SearchQueryTools.addNodeToSearchQuery = addNodeToSearchQuery; function getFacetStoreFromGroupProvenance(groupProvenanceId) { switch (groupProvenanceId) { case DwEnums_1.GroupProvenanceId.ProvenanceMatchingDepositGroupId: return DepositionGroupFacetStore_1.depositionGroupFacetStore; case DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity: return SequenceGroupFacetStore_1.sequenceGroupFacetStore; case DwEnums_1.GroupProvenanceId.ProvenanceMatchingUniprotAccession: return UniprotGroupFacetStore_1.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 DwEnums_1.GroupProvenanceId.ProvenanceMatchingDepositGroupId: return SearchMetadata_1.RcsbSearchMetadata.RcsbEntryGroupMembership.GroupId; case DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity: return SearchMetadata_1.RcsbSearchMetadata.RcsbPolymerEntityGroupMembership.GroupId; case DwEnums_1.GroupProvenanceId.ProvenanceMatchingUniprotAccession: return SearchMetadata_1.RcsbSearchMetadata.RcsbPolymerEntityGroupMembership.GroupId; } } })(SearchQueryTools || (exports.SearchQueryTools = SearchQueryTools = {}));