From ef62c2cc0a07d7e4a48190dd455a168335b20196 Mon Sep 17 00:00:00 2001 From: THanh Nguyen Date: Wed, 20 Apr 2022 17:03:03 -0500 Subject: [PATCH] feat(bool): add boolean type --- src/server/__tests__/schema.test.js | 6 ++++++ src/server/schema.js | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/server/__tests__/schema.test.js b/src/server/__tests__/schema.test.js index 1cecb9f9..5c2c2d0e 100644 --- a/src/server/__tests__/schema.test.js +++ b/src/server/__tests__/schema.test.js @@ -152,6 +152,12 @@ describe('Schema', () => { type RegularAccessHistogramForString { histogram: [BucketsForNestedStringAgg] } + type HistogramForBoolean { + histogram: [BucketsForNestedStringAgg] + } + type RegularAccessHistogramForBoolean { + histogram: [BucketsForNestedStringAgg] + } type HistogramForNumber { histogram( rangeStart: Int, diff --git a/src/server/schema.js b/src/server/schema.js index b39e7473..a184a66c 100644 --- a/src/server/schema.js +++ b/src/server/schema.js @@ -11,6 +11,7 @@ const esgqlTypeMapping = { byte: 'Int', double: 'Float', float: 'Float', + boolean: 'Boolean', half_float: 'Float', scaled_float: 'Float', array: 'Object', @@ -40,14 +41,17 @@ const getGQLType = (esInstance, esIndex, field, esFieldType) => { const EnumAggsHistogramName = { HISTOGRAM_FOR_STRING: 'HistogramForString', HISTOGRAM_FOR_NUMBER: 'HistogramForNumber', + HISTOGRAM_FOR_BOOLEAN: 'HistogramForBoolean', }; const gqlTypeToAggsHistogramName = { String: EnumAggsHistogramName.HISTOGRAM_FOR_STRING, Int: EnumAggsHistogramName.HISTOGRAM_FOR_NUMBER, Float: EnumAggsHistogramName.HISTOGRAM_FOR_NUMBER, + Boolean: EnumAggsHistogramName.HISTOGRAM_FOR_BOOLEAN, '[String]': EnumAggsHistogramName.HISTOGRAM_FOR_STRING, '[Int]': EnumAggsHistogramName.HISTOGRAM_FOR_NUMBER, '[Float]': EnumAggsHistogramName.HISTOGRAM_FOR_NUMBER, + '[Boolean]': EnumAggsHistogramName.HISTOGRAM_FOR_BOOLEAN, }; const getAggsHistogramName = (gqlType) => { @@ -244,6 +248,12 @@ const getTextHistogramSchema = (isRegularAccess) => ` } `; +const getBooleanHistogramSchema = (isRegularAccess) => ` + type ${(isRegularAccess ? histogramTypePrefix : '') + EnumAggsHistogramName.HISTOGRAM_FOR_BOOLEAN} { + histogram: [BucketsForNestedStringAgg] + } + `; + export const getMappingSchema = (esConfig) => ` type Mapping { ${esConfig.indices.map((cfg) => `${cfg.type} ( @@ -255,13 +265,20 @@ export const getMappingSchema = (esConfig) => ` export const getHistogramSchemas = () => { const textHistogramSchema = getTextHistogramSchema(false); + const booleanHistogramSchema = getBooleanHistogramSchema(false); + const regularAccessTextHistogramSchema = getTextHistogramSchema(true); + const regularAccessBooleanHistogramSchema = getBooleanHistogramSchema(true); + const numberHistogramSchema = getNumberHistogramSchema(false); const regularAccessNumberHistogramSchema = getNumberHistogramSchema(true); - const histogramSchemas = [textHistogramSchema, regularAccessTextHistogramSchema, numberHistogramSchema, regularAccessNumberHistogramSchema].join('\n'); + const histogramSchemas = [ + textHistogramSchema, regularAccessTextHistogramSchema, booleanHistogramSchema, + regularAccessBooleanHistogramSchema, numberHistogramSchema, regularAccessNumberHistogramSchema, + ].join('\n'); return histogramSchemas; };