From 8699a55ef8faa5bc925c6dc8de0c4bd5dd6b61ef Mon Sep 17 00:00:00 2001 From: Angelo Manganiello Date: Fri, 21 Aug 2020 11:56:41 +0200 Subject: [PATCH] fix #129 --- CHANGELOG.md | 1 + .../templates/server/src/domain/entity.ts.ejs | 8 +++--- test/entity.spec.js | 28 +++++++++---------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcd5f172..126e631c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ # [1.2.0](https://github.com/jhipster/generator-jhipster-nodejs/tree/v1.2.0) +- Blob types not saved [issue #129](https://github.com/jhipster/generator-jhipster-nodejs/issues/129) - Unexpected logs when creating a new app using import-jdl [issue #159](https://github.com/jhipster/generator-jhipster-nodejs/issues/159) - Language i18n for angular home page translation NHipster [issue #45](https://github.com/jhipster/generator-jhipster-nodejs/issues/45) - Language i18n for react home page translation NHipster [issue #59](https://github.com/jhipster/generator-jhipster-nodejs/issues/59) diff --git a/generators/entity-server/templates/server/src/domain/entity.ts.ejs b/generators/entity-server/templates/server/src/domain/entity.ts.ejs index 32c5b728..400ea3db 100644 --- a/generators/entity-server/templates/server/src/domain/entity.ts.ejs +++ b/generators/entity-server/templates/server/src/domain/entity.ts.ejs @@ -67,11 +67,11 @@ export default class <%= asEntity(entityClass) %> extends BaseEntity { <%_ if (fields[idx].fieldIsEnum) { _%> @Column({type: 'simple-enum', name: '<%-fieldNameAsDatabaseColumn %>', enum: <%= fieldType %>}) <%_ } else if (['Instant', 'ZonedDateTime', 'LocalDate'].includes(fieldType)) { _%> - @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>"<% if (required) { %>, nullable: false<% } %><% if (unique) { %>, unique: true<% } %>}) + @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>"<% if (!required) { %>, nullable: true<% } %><% if (unique) { %>, unique: true<% } %>}) <%_ } else if (fieldType === 'BigDecimal') { _%> - @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>", precision : 10, scale : 2<% if (required) { %>, nullable: false<% } %><% if (unique) { %>, unique: true<% } %>}) + @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>", precision : 10, scale : 2<% if (!required) { %>, nullable: true<% } %><% if (unique) { %>, unique: true<% } %>}) <%_ } else { _%> - @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>"<% if (fieldValidate === true) { %><% if (fieldValidateRules.includes('maxlength')) { %>, length: <%= fieldValidateRulesMaxlength %><% } %><% if (required) { %>, nullable: false<% } %><% if (unique) { %>, unique: true<% } %><% } %>}) + @Column({<%_ if(fieldColumnType) { _%> type: '<%-fieldColumnType%>' ,<%_ }_%> name: "<%-fieldNameAsDatabaseColumn %>"<% if (fieldValidate === true) { %><% if (fieldValidateRules.includes('maxlength')) { %>, length: <%= fieldValidateRulesMaxlength %><% } %> <% } %><% if (!required) { %>, nullable: true<% } %><% if (unique) { %>, unique: true<% }%>}) <%_ } _%> <%_ if (fields[idx].fieldIsEnum) { _%> <%= fieldName %>: <%= fieldType %>; @@ -80,7 +80,7 @@ export default class <%= asEntity(entityClass) %> extends BaseEntity { <%_ } _%> <%_ if ((fieldType === 'byte[]' || fieldType === 'ByteBuffer') && fieldTypeBlobContent !== 'text') { _%> - @Column({name: '<%-fieldNameAsDatabaseColumn %>_content_type'}) + @Column({name: '<%-fieldNameAsDatabaseColumn %>_content_type'<% if (!required) { %>, nullable: true<% } %>}) <%= fieldName %>ContentType: string; <%_ } } _%> diff --git a/test/entity.spec.js b/test/entity.spec.js index 14ed9274..afa20af4 100644 --- a/test/entity.spec.js +++ b/test/entity.spec.js @@ -91,7 +91,7 @@ describe('Subgenerator entity of nodejs JHipster blueprint', () => { assert.fileContent(greatEntityPath, "import { Gender } from './enumeration/gender';"); // name UUID unique field - assert.fileContent(greatEntityPath, "@Column({ name: 'name', unique: true })"); + assert.fileContent(greatEntityPath, "@Column({ name: 'name', nullable: true, unique: true })"); assert.fileContent(greatEntityPath, 'name: string;'); // Gender enum field @@ -103,55 +103,55 @@ describe('Subgenerator entity of nodejs JHipster blueprint', () => { assert.fileContent(greatEntityPath, 'address: string;'); // istrue Boolean required field - assert.fileContent(greatEntityPath, "@Column({ type: 'boolean', name: 'istrue' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'boolean', nullable: true, name: 'istrue' })"); assert.fileContent(greatEntityPath, 'istrue: boolean;'); // borndate LocalDate required field - assert.fileContent(greatEntityPath, "@Column({ type: 'date', name: 'borndate', nullable: false })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'date', name: 'borndate' })"); assert.fileContent(greatEntityPath, 'borndate: any;'); // profileimage Blob field - assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'profileimage' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'profileimage', nullable: true })"); assert.fileContent(greatEntityPath, 'profileimage: any;'); // storage AnyBlob field - assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'storage' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'storage', nullable: true })"); assert.fileContent(greatEntityPath, 'storage: any;'); // datafile TextBlob field - assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'datafile' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'datafile', nullable: true })"); assert.fileContent(greatEntityPath, 'datafile: any;'); // image Blob field - assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'image' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'blob', name: 'image', nullable: true })"); assert.fileContent(greatEntityPath, 'image: any;'); // amount BigDecimal field - assert.fileContent(greatEntityPath, "@Column({ type: 'decimal', name: 'amount', precision: 10, scale: 2 })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'decimal', name: 'amount', precision: 10, scale: 2, nullable: true })"); assert.fileContent(greatEntityPath, 'amount: number;'); // cfu Integer field - assert.fileContent(greatEntityPath, "@Column({ type: 'integer', name: 'cfu' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'integer', name: 'cfu', nullable: true })"); assert.fileContent(greatEntityPath, 'cfu: number;'); // mynumber Double field - assert.fileContent(greatEntityPath, "@Column({ type: 'double', name: 'mynumber' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'double', name: 'mynumber', nullable: true })"); assert.fileContent(greatEntityPath, 'mynumber: number;'); // count Long field - assert.fileContent(greatEntityPath, "@Column({ type: 'long', name: 'count' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'long', name: 'count', nullable: true })"); assert.fileContent(greatEntityPath, 'count: number;'); // cent Float field - assert.fileContent(greatEntityPath, "@Column({ type: 'float', name: 'cent' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'float', name: 'cent', nullable: true })"); assert.fileContent(greatEntityPath, 'cent: number;'); // creationtime Instant field - assert.fileContent(greatEntityPath, "@Column({ type: 'timestamp', name: 'creationtime' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'timestamp', name: 'creationtime', nullable: true })"); assert.fileContent(greatEntityPath, 'creationtime: any;'); // deathtime ZonedDateTime field - assert.fileContent(greatEntityPath, "@Column({ type: 'datetime', name: 'deathtime' })"); + assert.fileContent(greatEntityPath, "@Column({ type: 'datetime', name: 'deathtime', nullable: true })"); assert.fileContent(greatEntityPath, 'deathtime: any;'); }); });