From 7a9b6dd820c54ef4bbd23d1efb1b3ae6d075dab1 Mon Sep 17 00:00:00 2001 From: Jan Wedding Date: Mon, 18 Mar 2024 18:29:36 +0100 Subject: [PATCH] wip: default values #25094 --- .../update/_entityFile_-form.service.ts.ejs | 23 ++++++++++++++----- .../base-application/support/prepare-field.js | 4 +++- generators/liquibase/support/prepare-field.js | 2 +- .../liquibase/changelog/added_entity.xml.ejs | 2 +- .../changelog/default-field-value.ejs | 15 ++++++++++++ .../changelog/updated_entity.xml.ejs | 4 ++-- .../updated_entity_constraints.xml.ejs | 2 ++ 7 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 generators/liquibase/templates/src/main/resources/config/liquibase/changelog/default-field-value.ejs diff --git a/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs b/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs index d5d37a54e143..ceecf23c3b1f 100644 --- a/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +++ b/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs @@ -200,12 +200,23 @@ _%> <%_ for (field of fields) { const { fieldName, fieldTypeBoolean, fieldTypeTimed, fieldTypeLocalDate } = field; _%> - <%_ if (field.id) { _%> - <%= fieldName %>: null, - <%_ } else if (fieldTypeBoolean) { _%> - <%= fieldName %>: false, - <%_ } else if (fieldTypeTimed) { _%> - <%= fieldName %>: currentTime, + + <%_ if (field.fieldDefaultValueDefined) { _%> + <%_ if (field.fieldTypeCharSequence) { _%> + <%= fieldName %>: '<%= field.defaultValue %>', + <%_ } else if (fieldTypeTimed) { _%> + <%= fieldName %>: dayjs('<%= field.defaultValue %>'), + <%_ } else { _%> + <%= fieldName %>: <%= field.defaultValue %>, + <%_ } _%> + <%_ } else { _%> + <%_ if (field.id) { _%> + <%= fieldName %>: null, + <%_ } else if (fieldTypeBoolean) { _%> + <%= fieldName %>: false, + <%_ } else if (fieldTypeTimed) { _%> + <%= fieldName %>: currentTime, + <%_ } _%> <%_ } _%> <%_ } _%> <%_ for (const relationship of relationships.filter(({ persistableRelationship }) => persistableRelationship)) { diff --git a/generators/base-application/support/prepare-field.js b/generators/base-application/support/prepare-field.js index def00f444c28..2551c6bf2ccd 100644 --- a/generators/base-application/support/prepare-field.js +++ b/generators/base-application/support/prepare-field.js @@ -243,7 +243,7 @@ function _derivedProperties(field) { fieldType === INTEGER || fieldType === LONG || fieldType === FLOAT || fieldType === DOUBLE || fieldType === BIG_DECIMAL, fieldTypeBinary: fieldType === BYTES || fieldType === BYTE_BUFFER, fieldTypeTimed: fieldType === ZONED_DATE_TIME || fieldType === INSTANT, - fieldTypeCharSequence: fieldType === STRING || fieldType === UUID, + fieldTypeCharSequence: fieldType === STRING || fieldType === UUID || fieldType === TEXT_BLOB, fieldTypeTemporal: fieldType === ZONED_DATE_TIME || fieldType === INSTANT || fieldType === LOCAL_DATE, fieldValidationRequired: validationRules.includes(REQUIRED), fieldValidationMin: validationRules.includes(MIN), @@ -254,6 +254,8 @@ function _derivedProperties(field) { fieldValidationUnique: validationRules.includes(UNIQUE), fieldValidationMinBytes: validationRules.includes(MINBYTES), fieldValidationMaxBytes: validationRules.includes(MAXBYTES), + fieldDefaultValueDefined: field.defaultValue !== undefined, + fieldHasAnyDefaultValue: field.defaultValue !== undefined && field.defaultValueComputed !== undefined, }); } diff --git a/generators/liquibase/support/prepare-field.js b/generators/liquibase/support/prepare-field.js index 6a48b2924644..af4ada746988 100644 --- a/generators/liquibase/support/prepare-field.js +++ b/generators/liquibase/support/prepare-field.js @@ -142,7 +142,7 @@ export default function prepareField(entity, field) { mutateData(field, { __override__: false, columnType: data => parseLiquibaseColumnType(entity, data), - shouldDropDefaultValue: data => data.fieldType === ZONED_DATE_TIME || data.fieldType === INSTANT, + shouldDropDefaultValue: data => !data.fieldHasAnyDefaultValue && (data.fieldType === ZONED_DATE_TIME || data.fieldType === INSTANT), shouldCreateContentType: data => data.fieldType === BYTES && data.fieldTypeBlobContent !== TEXT, columnRequired: data => data.nullable === false || (data.fieldValidate === true && data.fieldValidateRules.includes('required')), nullable: data => !data.columnRequired, diff --git a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs index 1db93f56d07c..1b0c5417b62e 100644 --- a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +++ b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs @@ -30,7 +30,7 @@ > <%_ for (field of fields) { _%> - <% if (field.id && field.liquibaseAutoIncrement) { %> autoIncrement="true" startWith="1500"<%_ } %>> + <%- this.formatAsLiquibaseRemarks(field.documentation, true) %><% if (field.id && field.liquibaseAutoIncrement) { %> autoIncrement="true" startWith="1500"<%_ } %>> <%_ if (field.id) { _%> <%_ } else if (field.unique) { _%> diff --git a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/default-field-value.ejs b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/default-field-value.ejs new file mode 100644 index 000000000000..78a366b4f1bb --- /dev/null +++ b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/default-field-value.ejs @@ -0,0 +1,15 @@ +<%_ if (field.defaultValueComputed) { -%> + defaultValueComputed="<%= field.defaultValueComputed %>"<% -%> +<%_ } else if (field.fieldDefaultValueDefined) { -%> + <%_ if (field.fieldTypeCharSequence) { -%> + defaultValue="<%= field.defaultValue %>"<% -%> + <%_ } else if (field.fieldTypeNumeric) { -%> + defaultValueNumeric="<%= field.defaultValue %>"<% -%> + <%_ } else if (field.fieldTypeDateTime) { -%> + defaultValueDate="<%= field.defaultValue %>"<% -%> + <%_ } else if (field.fieldTypeBoolean) { -%> + defaultValueBoolean="<%= field.defaultValue %>"<% -%> + <%_ } else { -%> + defaultValue="<%= field.defaultValue %>"<% -%> + <%_ } -%> +<%_ } -%> \ No newline at end of file diff --git a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs index bbe10312c7f4..66e193689503 100644 --- a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +++ b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs @@ -25,14 +25,14 @@ <%_ for (field of addedFields) { _%> - /> + <%- this.formatAsLiquibaseRemarks(field.documentation, true) %>/> <%_ if (field.shouldCreateContentType) { _%> <%_ } } // End for (field of addedFields) _%> <%_ for (field of addedFields) { - if (field.fieldType === 'ZonedDateTime' || field.fieldType === 'Instant') { _%> + if (field.shouldDropDefaultValue) { _%> <%_ } _%> <%_ } _%> diff --git a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs index 845bddcaece6..3aa4e7cc71e0 100644 --- a/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +++ b/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs @@ -35,10 +35,12 @@ if (hasFieldConstraint) { _%> constraintName="<%= field.uniqueConstraintName %>"/> <%_ } if (field.columnRequired) { + if (!field.fieldHasAnyDefaultValue) { _%> + <%_ } _%> <%_ if (field.shouldCreateContentType) { _%>