Convert index-pattern keys to snakeCase before sending to ES for the sake of backwards compatibility

This commit is contained in:
Matthew Bargar 2015-12-15 20:03:27 -05:00
parent 1568ddcb5f
commit 83bbcb6c14
9 changed files with 57 additions and 30 deletions

View 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);
});
});
});

View file

@ -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);
});
});
});

View 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);
});
}
};

View file

@ -1,7 +0,0 @@
const _ = require('lodash');
module.exports = function convertToSnakeCase(object) {
return _.mapKeys(object, (value, key) => {
return _.snakeCase(key);
});
};

View file

@ -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');

View file

@ -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');

View file

@ -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)) {

View file

@ -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);

View file

@ -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'
]