feat: ensure ID is primary key after autoupdate

Signed-off-by: Stefan Blaginov <Stefan.Blaginov@docusign.com>
This commit is contained in:
Stefan Blaginov 2022-01-24 22:25:01 +00:00
parent 3da25aed4e
commit 9ff5bd1061
1 changed files with 14 additions and 1 deletions

View File

@ -204,7 +204,20 @@ function mixinMigration(MySQL, mysql) {
const sql = [];
propNames.forEach(function(propName) {
if (m.properties[propName] && self.id(model, propName)) return;
// If the field is set as an ID inside the model
if (m.properties[propName] && self.id(model, propName)) {
const existingIdField = actualFields?.find(
({ Field }) => Field === expectedColNameForModel(propName, m)
);
// And the same field is already present inside the DB, but not set as a
// primary key
if (existingIdField && existingIdField.Key !== 'PRI') {
// Set the field to а primary key
sql.push(`ADD PRIMARY KEY (\`${existingIdField.Field}\`)`);
} else { return; }
};
let found;
const colName = expectedColNameForModel(propName, m);
if (actualFields) {