diff --git a/node_modules/loopback-datasource-juggler/lib/datasource.js b/node_modules/loopback-datasource-juggler/lib/datasource.js index c19974b..c163af7 100644 --- a/node_modules/loopback-datasource-juggler/lib/datasource.js +++ b/node_modules/loopback-datasource-juggler/lib/datasource.js @@ -1716,7 +1716,7 @@ DataSource.prototype.discoverSchemas = function(tableName, options, cb) { columns.forEach(function(item) { const propName = nameMapper('column', item.columnName); - schema.properties[propName] = { + let propertyDetails = { type: item.type, required: !item.generated && (item.nullable === 'N' || item.nullable === 'NO' || item.nullable === 0 || item.nullable === false), @@ -1727,12 +1727,23 @@ DataSource.prototype.discoverSchemas = function(tableName, options, cb) { scale: item.dataScale, generated: item.generated || false, }; + if ( + item.indexType === 'BTREE' && + item.indexName !== 'PRIMARY' && + !item.isForeignKey + ) { + propertyDetails.index = {unique: true}; + } if (pks[item.columnName]) { - schema.properties[propName].id = pks[item.columnName]; + propertyDetails.id = pks[item.columnName]; } - if (uniqueKeys.includes(propName)) { - schema.properties[propName]['index'] = {unique: true}; + if ( + uniqueKeys.includes(propName) && + propertyDetails['index'] === undefined + ) { + propertyDetails['index'] = {unique: true}; } + schema.properties[propName] = propertyDetails; const dbSpecific = schema.properties[propName][dbType] = { columnName: item.columnName, dataType: item.dataType,