From 8cd01fe99e466e8763e5b50555286450d6b64022 Mon Sep 17 00:00:00 2001 From: Tomas Bures Date: Fri, 26 Jul 2019 18:32:14 +0530 Subject: [PATCH] Fix for #639 --- client/src/lib/form.js | 2 +- server/models/fields.js | 3 +-- ...190726150000_shorten_field_column_names.js | 21 +++++++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 server/setup/knex/migrations/20190726150000_shorten_field_column_names.js diff --git a/client/src/lib/form.js b/client/src/lib/form.js index c1d4b30f..40eede72 100644 --- a/client/src/lib/form.js +++ b/client/src/lib/form.js @@ -1373,7 +1373,7 @@ const withForm = createComponentMixin([], [], (TargetClass, InnerClass) => { const savedData = self.state.formState.get('savedData'); function isDifferent(data1, data2, prefix) { - if (typeof data1 === 'object' && typeof data2 === 'object') { + if (typeof data1 === 'object' && typeof data2 === 'object' && data1 && data2) { const keys = new Set([...Object.keys(data1), ...Object.keys(data2)]); for (const key of keys) { if (isDifferent(data1[key], data2[key], `${prefix}/${key}`)) { diff --git a/server/models/fields.js b/server/models/fields.js index c73efb4e..faac8bd7 100644 --- a/server/models/fields.js +++ b/server/models/fields.js @@ -2,7 +2,6 @@ const knex = require('../lib/knex'); const hasher = require('node-object-hash')(); -const slugify = require('slugify'); const { enforce, filterObject } = require('../lib/helpers'); const dtHelpers = require('../lib/dt-helpers'); const interoperableErrors = require('../../shared/interoperable-errors'); @@ -543,7 +542,7 @@ async function createTx(tx, context, listId, entity) { let columnName; if (!fieldType.grouped) { - columnName = ('custom_' + slugify(entity.name, '_') + '_' + shortid.generate()).toLowerCase().replace(/[^a-z0-9_]/g, ''); + columnName = ('custom_' + '_' + shortid.generate()).toLowerCase().replace(/[^a-z0-9_]/g, '_'); } const filteredEntity = filterObject(entity, allowedKeysCreate); diff --git a/server/setup/knex/migrations/20190726150000_shorten_field_column_names.js b/server/setup/knex/migrations/20190726150000_shorten_field_column_names.js new file mode 100644 index 00000000..c1fc42eb --- /dev/null +++ b/server/setup/knex/migrations/20190726150000_shorten_field_column_names.js @@ -0,0 +1,21 @@ +const shortid = require('shortid'); + +exports.up = (knex, Promise) => (async() => { + const fields = await knex('custom_fields').whereNotNull('column'); + + for (const field of fields) { + const listId = field.list; + const oldName = field.column; + const newName = ('custom_' + '_' + shortid.generate()).toLowerCase().replace(/[^a-z0-9_]/g, '_'); + + await knex('custom_fields').where('id', field.id).update('column', newName); + + await knex.schema.table('subscription__' + listId, table => { + table.renameColumn(oldName, newName); + table.renameColumn('source_' + oldName, 'source_' + newName); + }); + } +})(); + +exports.down = (knex, Promise) => (async() => { +})();