@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
118 lines (117 loc) • 6.03 kB
JavaScript
;
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 = {}));