mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Convert index-pattern keys to snakeCase before sending to ES for the sake of backwards compatibility
This commit is contained in:
parent
1568ddcb5f
commit
83bbcb6c14
9 changed files with 57 additions and 30 deletions
35
src/plugins/kibana/server/lib/__tests__/case_conversion.js
Normal file
35
src/plugins/kibana/server/lib/__tests__/case_conversion.js
Normal file
|
@ -0,0 +1,35 @@
|
|||
const expect = require('expect.js');
|
||||
const { convertToSnakeCase, convertToCamelCase } = require('../case_conversion');
|
||||
const _ = require('lodash');
|
||||
|
||||
describe('convertToSnakeCase', function () {
|
||||
|
||||
it('should convert all of an object\'s keys to snake case', function () {
|
||||
const result = convertToSnakeCase({
|
||||
camelCase: 'camel_case',
|
||||
'kebab-case': 'kebab_case',
|
||||
snake_case: 'snake_case'
|
||||
});
|
||||
|
||||
_.forEach(result, function (value, key) {
|
||||
expect(key).to.be(value);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('convertToCamelCase', function () {
|
||||
|
||||
it('should convert all of an object\'s keys to camel case', function () {
|
||||
const result = convertToCamelCase({
|
||||
camelCase: 'camelCase',
|
||||
'kebab-case': 'kebabCase',
|
||||
snake_case: 'snakeCase'
|
||||
});
|
||||
|
||||
_.forEach(result, function (value, key) {
|
||||
expect(key).to.be(value);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -1,19 +0,0 @@
|
|||
const expect = require('expect.js');
|
||||
const convertToSnakeCase = require('../convert_to_snake_case');
|
||||
const _ = require('lodash');
|
||||
|
||||
describe('convertToSnakeCase', function () {
|
||||
|
||||
it('should convert all of an object\'s keys to snake case', function () {
|
||||
const result = convertToSnakeCase({
|
||||
camelCase: 'camel_case',
|
||||
'kebab-case': 'kebab_case',
|
||||
snake_case: 'snake_case'
|
||||
});
|
||||
|
||||
_.forEach(result, function (value, key) {
|
||||
expect(key).to.be(value);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
15
src/plugins/kibana/server/lib/case_conversion.js
Normal file
15
src/plugins/kibana/server/lib/case_conversion.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
const _ = require('lodash');
|
||||
|
||||
module.exports = {
|
||||
convertToSnakeCase: function (object) {
|
||||
return _.mapKeys(object, (value, key) => {
|
||||
return _.snakeCase(key);
|
||||
});
|
||||
},
|
||||
|
||||
convertToCamelCase: function (object) {
|
||||
return _.mapKeys(object, (value, key) => {
|
||||
return _.camelCase(key);
|
||||
});
|
||||
}
|
||||
};
|
|
@ -1,7 +0,0 @@
|
|||
const _ = require('lodash');
|
||||
|
||||
module.exports = function convertToSnakeCase(object) {
|
||||
return _.mapKeys(object, (value, key) => {
|
||||
return _.snakeCase(key);
|
||||
});
|
||||
};
|
|
@ -1,4 +1,4 @@
|
|||
const convertToSnakeCase = require('../../../lib/convert_to_snake_case');
|
||||
const { convertToSnakeCase } = require('../../../lib/case_conversion');
|
||||
const _ = require('lodash');
|
||||
const createApiDocument = require('../../../lib/api_document_builders/create_api_document');
|
||||
const createRelationshipObject = require('../../../lib/api_document_builders/create_relationship_object');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const convertToSnakeCase = require('../../../lib/convert_to_snake_case');
|
||||
const { convertToSnakeCase } = require('../../../lib/case_conversion');
|
||||
const _ = require('lodash');
|
||||
const createApiDocument = require('../../../lib/api_document_builders/create_api_document');
|
||||
const createRelationshipObject = require('../../../lib/api_document_builders/create_relationship_object');
|
||||
|
|
|
@ -3,6 +3,7 @@ const _ = require('lodash');
|
|||
const indexPatternSchema = require('../../../lib/schemas/resources/index_pattern_schema');
|
||||
const handleESError = require('../../../lib/handle_es_error');
|
||||
const addMappingInfoToPatternFields = require('../../../lib/add_mapping_info_to_pattern_fields');
|
||||
const { convertToCamelCase } = require('../../../lib/case_conversion');
|
||||
|
||||
module.exports = function registerPost(server) {
|
||||
server.route({
|
||||
|
@ -22,7 +23,7 @@ module.exports = function registerPost(server) {
|
|||
const requestDocument = _.cloneDeep(req.payload);
|
||||
const included = requestDocument.included;
|
||||
const indexPatternId = requestDocument.data.id;
|
||||
const indexPattern = requestDocument.data.attributes;
|
||||
const indexPattern = convertToCamelCase(requestDocument.data.attributes);
|
||||
const templateResource = _.isEmpty(included) ? null : included[0];
|
||||
|
||||
if (!_.isEmpty(templateResource)) {
|
||||
|
|
|
@ -2,6 +2,7 @@ const Boom = require('boom');
|
|||
const indexPatternSchema = require('../../../lib/schemas/resources/index_pattern_schema');
|
||||
const _ = require('lodash');
|
||||
const handleESError = require('../../../lib/handle_es_error');
|
||||
const { convertToCamelCase } = require('../../../lib/case_conversion');
|
||||
|
||||
module.exports = function registerPut(server) {
|
||||
server.route({
|
||||
|
@ -20,7 +21,7 @@ module.exports = function registerPut(server) {
|
|||
const callWithRequest = server.plugins.elasticsearch.callWithRequest;
|
||||
const indexPatternResource = _.cloneDeep(req.payload);
|
||||
const indexPatternId = indexPatternResource.data.id;
|
||||
const indexPattern = indexPatternResource.data.attributes;
|
||||
const indexPattern = convertToCamelCase(indexPatternResource.data.attributes);
|
||||
const included = indexPatternResource.included;
|
||||
indexPattern.fields = JSON.stringify(indexPattern.fields);
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ module.exports = function (grunt) {
|
|||
args: [
|
||||
'--server.port=' + uiConfig.servers.kibana.port,
|
||||
'--env.name=development',
|
||||
'--server.xsrf.disableProtection=true',
|
||||
'--elasticsearch.url=' + format(uiConfig.servers.elasticsearch),
|
||||
'--logging.json=false'
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue