graphql-compose-elasticsearch
Version:
Elastic search via GraphQL
163 lines • 7.44 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.renameUnderscoredToDots = exports.prepareQueryInResolve = exports.getQueryITC = void 0;
const MatchAll_1 = require("./MatchAll");
const Bool_1 = require("./Compound/Bool");
const ConstantScore_1 = require("./Compound/ConstantScore");
const DisMax_1 = require("./Compound/DisMax");
const Boosting_1 = require("./Compound/Boosting");
const FunctionScore_1 = require("./Compound/FunctionScore");
const Exists_1 = require("./TermLevel/Exists");
const Fuzzy_1 = require("./TermLevel/Fuzzy");
const Ids_1 = require("./TermLevel/Ids");
const Prefix_1 = require("./TermLevel/Prefix");
const Range_1 = require("./TermLevel/Range");
const Regexp_1 = require("./TermLevel/Regexp");
const Type_1 = require("./TermLevel/Type");
const Term_1 = require("./TermLevel/Term");
const Terms_1 = require("./TermLevel/Terms");
const Wildcard_1 = require("./TermLevel/Wildcard");
const Match_1 = require("./FullText/Match");
const MatchPhrase_1 = require("./FullText/MatchPhrase");
const MatchPhrasePrefix_1 = require("./FullText/MatchPhrasePrefix");
const MultiMatch_1 = require("./FullText/MultiMatch");
const Common_1 = require("./FullText/Common");
const QueryString_1 = require("./FullText/QueryString");
const SimpleQueryString_1 = require("./FullText/SimpleQueryString");
const GeoBoundingBox_1 = require("./Geo/GeoBoundingBox");
const GeoDistance_1 = require("./Geo/GeoDistance");
const GeoPolygon_1 = require("./Geo/GeoPolygon");
const GeoShape_1 = require("./Geo/GeoShape");
const MoreLikeThis_1 = require("./Specialized/MoreLikeThis");
const Percolate_1 = require("./Specialized/Percolate");
const Script_1 = require("./Specialized/Script");
const HasChild_1 = require("./Joining/HasChild");
const HasParent_1 = require("./Joining/HasParent");
const Nested_1 = require("./Joining/Nested");
const ParentId_1 = require("./Joining/ParentId");
const utils_1 = require("../../utils");
function getQueryITC(opts) {
const name = (0, utils_1.getTypeName)('Query', opts);
const description = (0, utils_1.desc)(`
Elasticsearch provides a full Query DSL based on JSON to define queries.
[Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html)
`);
return opts.getOrCreateITC(name, () => ({
name,
description,
fields: {
match_all: (0, MatchAll_1.getMatchAllITC)(opts),
bool: (0, Bool_1.getBoolITC)(opts),
constant_score: (0, ConstantScore_1.getConstantScoreITC)(opts),
dis_max: (0, DisMax_1.getDisMaxITC)(opts),
boosting: (0, Boosting_1.getBoostingITC)(opts),
function_score: (0, FunctionScore_1.getFunctionScoreITC)(opts),
match: (0, Match_1.getMatchITC)(opts),
match_phrase: (0, MatchPhrase_1.getMatchPhraseITC)(opts),
match_phrase_prefix: (0, MatchPhrasePrefix_1.getMatchPhrasePrefixITC)(opts),
multi_match: (0, MultiMatch_1.getMultiMatchITC)(opts),
common: (0, Common_1.getCommonITC)(opts),
query_string: (0, QueryString_1.getQueryStringITC)(opts),
simple_query_string: (0, SimpleQueryString_1.getSimpleQueryStringITC)(opts),
exists: (0, Exists_1.getExistsITC)(opts),
fuzzy: (0, Fuzzy_1.getFuzzyITC)(opts),
ids: (0, Ids_1.getIdsITC)(opts),
prefix: (0, Prefix_1.getPrefixITC)(opts),
range: (0, Range_1.getRangeITC)(opts),
regexp: (0, Regexp_1.getRegexpITC)(opts),
type: (0, Type_1.getTypeITC)(opts),
term: (0, Term_1.getTermITC)(opts),
terms: (0, Terms_1.getTermsITC)(opts),
wildcard: (0, Wildcard_1.getWildcardITC)(opts),
geo_bounding_box: (0, GeoBoundingBox_1.getGeoBoundingBoxITC)(opts),
geo_distance: (0, GeoDistance_1.getGeoDistanceITC)(opts),
geo_polygon: (0, GeoPolygon_1.getGeoPolygonITC)(opts),
geo_shape: (0, GeoShape_1.getGeoShapeITC)(opts),
more_like_this: (0, MoreLikeThis_1.getMoreLikeThisITC)(opts),
percolate: (0, Percolate_1.getPercolateITC)(opts),
script: (0, Script_1.getScriptITC)(opts),
has_child: (0, HasChild_1.getHasChildITC)(opts),
has_parent: (0, HasParent_1.getHasParentITC)(opts),
nested: (0, Nested_1.getNestedITC)(opts),
parent_id: (0, ParentId_1.getParentIdITC)(opts),
},
}));
}
exports.getQueryITC = getQueryITC;
function prepareQueryInResolve(query, fieldMap) {
if (query.bool) {
query.bool = (0, Bool_1.prepareBoolInResolve)(query.bool, fieldMap);
}
if (query.nested && query.nested.query && query.nested.path) {
query.nested.path = query.nested.path.replace(/__/g, '.');
query.nested.query = prepareQueryInResolve(query.nested.query, fieldMap);
}
if (query.constant_score) {
query.constant_score = (0, ConstantScore_1.prepareConstantScoreInResolve)(query.constant_score, fieldMap);
}
if (query.dis_max) {
query.dis_max = (0, DisMax_1.prepareDisMaxResolve)(query.dis_max, fieldMap);
}
if (query.boosting) {
query.boosting = (0, Boosting_1.prepareBoostingInResolve)(query.boosting, fieldMap);
}
if (query.function_score) {
query.function_score = (0, FunctionScore_1.prepareFunctionScoreInResolve)(query.function_score, fieldMap);
}
if (query.match) {
query.match = renameUnderscoredToDots(query.match, fieldMap);
}
if (query.match_phrase) {
query.match_phrase = renameUnderscoredToDots(query.match_phrase, fieldMap);
}
if (query.match_phrase_prefix) {
query.match_phrase_prefix = renameUnderscoredToDots(query.match_phrase_prefix, fieldMap);
}
if (query.common) {
query.common = renameUnderscoredToDots(query.common, fieldMap);
}
if (query.geo_bounding_box) {
query.geo_bounding_box = renameUnderscoredToDots(query.geo_bounding_box, fieldMap);
}
if (query.geo_distance) {
query.geo_distance = renameUnderscoredToDots(query.geo_distance, fieldMap);
}
if (query.geo_polygon) {
query.geo_polygon = renameUnderscoredToDots(query.geo_polygon, fieldMap);
}
if (query.geo_shape) {
query.geo_shape = renameUnderscoredToDots(query.geo_shape, fieldMap);
}
if (query.fuzzy) {
query.fuzzy = renameUnderscoredToDots(query.fuzzy, fieldMap);
}
if (query.prefix) {
query.prefix = renameUnderscoredToDots(query.prefix, fieldMap);
}
if (query.range) {
query.range = renameUnderscoredToDots(query.range, fieldMap);
}
if (query.regexp) {
query.regexp = renameUnderscoredToDots(query.regexp, fieldMap);
}
if (query.term) {
query.term = renameUnderscoredToDots(query.term, fieldMap);
}
if (query.terms) {
query.terms = renameUnderscoredToDots(query.terms, fieldMap);
}
if (query.wildcard) {
query.wildcard = renameUnderscoredToDots(query.wildcard, fieldMap);
}
return query;
}
exports.prepareQueryInResolve = prepareQueryInResolve;
function renameUnderscoredToDots(obj, _fieldMap) {
const result = {};
Object.keys(obj).forEach((o) => {
result[o.replace(/__/g, '.')] = obj[o];
});
return result;
}
exports.renameUnderscoredToDots = renameUnderscoredToDots;
//# sourceMappingURL=Query.js.map