diff --git a/core/server/data/schema/commands.js b/core/server/data/schema/commands.js index d5a1eb79a7..34bfacca1c 100644 --- a/core/server/data/schema/commands.js +++ b/core/server/data/schema/commands.js @@ -104,6 +104,7 @@ function createTable(table, transaction, tableSpec = schema[table]) { return (transaction || db.knex).schema.createTable(table, function (t) { let tableIndexes = []; + let tableUniqueConstraints = []; const columnKeys = _.keys(tableSpec); _.each(columnKeys, function (column) { @@ -112,12 +113,21 @@ function createTable(table, transaction, tableSpec = schema[table]) { return; } + if (column === '@@UNIQUE_CONSTRAINTS@@') { + tableUniqueConstraints = tableSpec['@@UNIQUE_CONSTRAINTS@@']; + return; + } + return addTableColumn(table, t, column, tableSpec[column]); }); _.each(tableIndexes, function (index) { t.index(index); }); + + _.each(tableUniqueConstraints, function (unique) { + t.unique(unique); + }); }); }); } diff --git a/core/server/models/base/index.js b/core/server/models/base/index.js index 7949696c52..bfdff17ab6 100644 --- a/core/server/models/base/index.js +++ b/core/server/models/base/index.js @@ -1254,7 +1254,8 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ // exclude fields if enabled if (exclude) { - const toSelect = _.keys(schema.tables[tableNames[modelName]]); + let toSelect = _.keys(schema.tables[tableNames[modelName]]); + toSelect = toSelect.filter(key => !(key.startsWith('@@'))); _.each(exclude, (key) => { if (toSelect.indexOf(key) !== -1) {