diff --git a/forward_engineering/configs/templates.js b/forward_engineering/configs/templates.js index 31532327..75e1f53a 100644 --- a/forward_engineering/configs/templates.js +++ b/forward_engineering/configs/templates.js @@ -74,7 +74,8 @@ module.exports = { addColumn: 'ADD ${script}', - addCheckConstraint: 'ALTER TABLE ${tableName} ADD CONSTRAINT ${constraintName} CHECK (${expression})${terminator}', + addCheckConstraint: + 'ALTER TABLE ${tableName} ADD CONSTRAINT ${constraintName} ${check} (${expression})${terminator}', addNotNullConstraint: 'ALTER TABLE ${tableName} ALTER COLUMN ${columnName} ${columnType} NOT NULL${terminator}', diff --git a/forward_engineering/ddlProvider.js b/forward_engineering/ddlProvider.js index 15720a7f..ff5645a3 100644 --- a/forward_engineering/ddlProvider.js +++ b/forward_engineering/ddlProvider.js @@ -255,10 +255,10 @@ module.exports = (baseProvider, options, app) => { return createTableIndex(terminator, tableName, index, isActivated && isParentActivated); }, - createCheckConstraint(checkConstraint) { + createCheckConstraint(checkConstraint, isInline = true) { return assignTemplates(templates.checkConstraint, { name: checkConstraint.name, - check: checkConstraint.check ? 'CHECK' : 'NO CHECK', + check: checkConstraint.check || isInline ? 'CHECK' : 'NO CHECK', notForReplication: checkConstraint.enforceForReplication ? '' : ' NOT FOR REPLICATION', expression: _.trim(checkConstraint.expression).replace(/^\(([\s\S]*)\)$/, '$1'), terminator, @@ -717,7 +717,7 @@ module.exports = (baseProvider, options, app) => { alterTableAddCheckConstraint(fullTableName, checkConstraint) { return assignTemplates(templates.alterTableAddConstraint, { tableName: fullTableName, - constraint: this.createCheckConstraint(checkConstraint), + constraint: this.createCheckConstraint(checkConstraint, false), terminator, }); }, @@ -971,12 +971,13 @@ module.exports = (baseProvider, options, app) => { }); }, - addCheckConstraint(tableName, constraintName, expression) { + addCheckConstraint(tableName, constraintName, expression, check) { const templateConfig = { tableName, constraintName, expression, terminator, + check: check ? 'CHECK' : 'NO CHECK', }; return assignTemplates(templates.addCheckConstraint, templateConfig); }, diff --git a/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js b/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js index c7c6f186..b676f5aa 100644 --- a/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js +++ b/forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js @@ -43,7 +43,7 @@ module.exports = (app, options) => { }), ); const checkConstraints = (jsonSchema.chkConstr || []).map(check => - ddlProvider.createCheckConstraint(ddlProvider.hydrateCheckConstraint(check)), + ddlProvider.createCheckConstraint(ddlProvider.hydrateCheckConstraint(check), true), ); const tableData = { name: tableName, diff --git a/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js b/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js index 69ff18ba..9a818524 100644 --- a/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js +++ b/forward_engineering/helpers/alterScriptHelpers/entityHelpers/checkConstraintHelper.js @@ -66,8 +66,13 @@ const getAddCheckConstraintScriptDtos = (_, ddlProvider) => (constraintHistory, return constraintHistory .filter(historyEntry => historyEntry.new && !historyEntry.old) .map(historyEntry => { - const { chkConstrName, constrExpression } = historyEntry.new; - return ddlProvider.addCheckConstraint(fullTableName, wrapInBrackets(chkConstrName), constrExpression); + const { chkConstrName, constrCheck, constrExpression } = historyEntry.new; + return ddlProvider.addCheckConstraint( + fullTableName, + wrapInBrackets(chkConstrName), + constrExpression, + constrCheck, + ); }) .map(script => AlterScriptDto.getInstance([script], true, false)); }; @@ -94,12 +99,16 @@ const getUpdateCheckConstraintScriptDtos = (_, ddlProvider) => (constraintHistor .map(historyEntry => { const { chkConstrName: oldConstrainName } = historyEntry.old; const dropConstraintScript = ddlProvider.dropConstraint(fullTableName, wrapInBrackets(oldConstrainName)); - - const { chkConstrName: newConstrainName, constrExpression: newConstraintExpression } = historyEntry.new; + const { + chkConstrName: newConstrainName, + constrCheck, + constrExpression: newConstraintExpression, + } = historyEntry.new; const addConstraintScript = ddlProvider.addCheckConstraint( fullTableName, wrapInBrackets(newConstrainName), newConstraintExpression, + constrCheck, ); return [