From 2e1319a34dce7e7b59d191ac135d55b395458030 Mon Sep 17 00:00:00 2001 From: Vladyslav Shchepotin Date: Sat, 13 Jul 2024 21:25:52 +0300 Subject: [PATCH] feat(generator): for properties --- .../all-db-resource/dto/create.dto.ejs.t | 7 +- .../document-resource/dto/create.dto.ejs.t | 7 +- .../relational-resource/dto/create.dto.ejs.t | 7 +- .../add-to-all-db/domain/domain.ejs.t | 8 ++ .../add-to-all-db/dto/01-create.dto.ejs.t | 19 ++++ ...02-create-import-class-validator.dto.ejs.t | 11 +++ .../dto/03-create-boolean.dto.ejs.t | 9 ++ .../dto/04-create-number.dto.ejs.t | 9 ++ .../dto/05-create-string.dto.ejs.t | 9 ++ .../dto/06-create-import-swagger.dto.ejs.t | 11 +++ .../dto/07-create-api-property.dto.ejs.t | 9 ++ .../document/entities/schema.ejs.t | 9 ++ .../document/mappers/mapper-domain.ejs.t | 6 ++ .../document/mappers/mapper-persistence.ejs.t | 6 ++ .../relational/entities/entity-column.ejs.t | 7 ++ .../relational/entities/entity.ejs.t | 9 ++ .../relational/mappers/mapper-domain.ejs.t | 6 ++ .../mappers/mapper-persistence.ejs.t | 6 ++ .hygen/property/add-to-all-db/prompt.js | 43 +++++++++ .../add-to-document/domain/domain.ejs.t | 8 ++ .../add-to-document/dto/01-create.dto.ejs.t | 19 ++++ ...02-create-import-class-validator.dto.ejs.t | 11 +++ .../dto/03-create-boolean.dto.ejs.t | 9 ++ .../dto/04-create-number.dto.ejs.t | 9 ++ .../dto/05-create-string.dto.ejs.t | 9 ++ .../dto/06-create-import-swagger.dto.ejs.t | 11 +++ .../dto/07-create-api-property.dto.ejs.t | 9 ++ .../document/entities/schema.ejs.t | 9 ++ .../document/mappers/mapper-domain.ejs.t | 6 ++ .../document/mappers/mapper-persistence.ejs.t | 6 ++ .hygen/property/add-to-document/prompt.js | 43 +++++++++ .../add-to-relational/domain/domain.ejs.t | 8 ++ .../add-to-relational/dto/01-create.dto.ejs.t | 19 ++++ ...02-create-import-class-validator.dto.ejs.t | 11 +++ .../dto/03-create-boolean.dto.ejs.t | 9 ++ .../dto/04-create-number.dto.ejs.t | 9 ++ .../dto/05-create-string.dto.ejs.t | 9 ++ .../dto/06-create-import-swagger.dto.ejs.t | 11 +++ .../dto/07-create-api-property.dto.ejs.t | 9 ++ .../relational/entities/entity-column.ejs.t | 7 ++ .../relational/entities/entity.ejs.t | 9 ++ .../relational/mappers/mapper-domain.ejs.t | 6 ++ .../mappers/mapper-persistence.ejs.t | 6 ++ .hygen/property/add-to-relational/prompt.js | 43 +++++++++ docs/cli.md | 24 +++++ package.json | 6 ++ src/auth/dto/login-response.dto.ts | 10 +-- src/auth/dto/refresh-response.dto.ts | 8 +- src/files/domain/file.ts | 4 +- .../document/entities/file.schema.ts | 4 +- .../relational/entities/file.entity.ts | 6 +- .../uploader/local/dto/file-response.dto.ts | 4 +- .../s3-presigned/dto/file-response.dto.ts | 6 +- .../uploader/s3/dto/file-response.dto.ts | 4 +- src/roles/domain/role.ts | 6 +- .../document/entities/role.schema.ts | 6 +- .../relational/entities/role.entity.ts | 6 +- src/statuses/domain/status.ts | 6 +- .../document/entities/status.schema.ts | 6 +- .../relational/entities/status.entity.ts | 6 +- src/users/domain/user.ts | 26 +++--- src/users/dto/create-user.dto.ts | 8 +- .../document/entities/user.schema.ts | 24 ++--- .../document/mappers/user.mapper.ts | 89 ++++++++++--------- .../relational/entities/user.entity.ts | 26 +++--- .../relational/mappers/user.mapper.ts | 84 ++++++++--------- .../dto/infinity-pagination-response.dto.ts | 6 +- 67 files changed, 697 insertions(+), 181 deletions(-) create mode 100644 .hygen/property/add-to-all-db/domain/domain.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/01-create.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/02-create-import-class-validator.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/03-create-boolean.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/04-create-number.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/05-create-string.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/06-create-import-swagger.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/dto/07-create-api-property.dto.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/document/entities/schema.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-domain.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity-column.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t create mode 100644 .hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t create mode 100644 .hygen/property/add-to-all-db/prompt.js create mode 100644 .hygen/property/add-to-document/domain/domain.ejs.t create mode 100644 .hygen/property/add-to-document/dto/01-create.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/02-create-import-class-validator.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/03-create-boolean.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/04-create-number.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/05-create-string.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/06-create-import-swagger.dto.ejs.t create mode 100644 .hygen/property/add-to-document/dto/07-create-api-property.dto.ejs.t create mode 100644 .hygen/property/add-to-document/infrastructure/persistence/document/entities/schema.ejs.t create mode 100644 .hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-domain.ejs.t create mode 100644 .hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t create mode 100644 .hygen/property/add-to-document/prompt.js create mode 100644 .hygen/property/add-to-relational/domain/domain.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/01-create.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/02-create-import-class-validator.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/03-create-boolean.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/04-create-number.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/05-create-string.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/06-create-import-swagger.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/dto/07-create-api-property.dto.ejs.t create mode 100644 .hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity-column.ejs.t create mode 100644 .hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity.ejs.t create mode 100644 .hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t create mode 100644 .hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t create mode 100644 .hygen/property/add-to-relational/prompt.js diff --git a/.hygen/generate/all-db-resource/dto/create.dto.ejs.t b/.hygen/generate/all-db-resource/dto/create.dto.ejs.t index 892f53829..2e0699b15 100644 --- a/.hygen/generate/all-db-resource/dto/create.dto.ejs.t +++ b/.hygen/generate/all-db-resource/dto/create.dto.ejs.t @@ -1,7 +1,6 @@ --- to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts --- -// Don't forget to use the class-validator decorators in the DTO properties. -// import { Allow } from 'class-validator'; - -export class Create<%= name %>Dto {} +export class Create<%= name %>Dto { + // Don't forget to use the class-validator decorators in the DTO properties. +} diff --git a/.hygen/generate/document-resource/dto/create.dto.ejs.t b/.hygen/generate/document-resource/dto/create.dto.ejs.t index 892f53829..2e0699b15 100644 --- a/.hygen/generate/document-resource/dto/create.dto.ejs.t +++ b/.hygen/generate/document-resource/dto/create.dto.ejs.t @@ -1,7 +1,6 @@ --- to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts --- -// Don't forget to use the class-validator decorators in the DTO properties. -// import { Allow } from 'class-validator'; - -export class Create<%= name %>Dto {} +export class Create<%= name %>Dto { + // Don't forget to use the class-validator decorators in the DTO properties. +} diff --git a/.hygen/generate/relational-resource/dto/create.dto.ejs.t b/.hygen/generate/relational-resource/dto/create.dto.ejs.t index 892f53829..2e0699b15 100644 --- a/.hygen/generate/relational-resource/dto/create.dto.ejs.t +++ b/.hygen/generate/relational-resource/dto/create.dto.ejs.t @@ -1,7 +1,6 @@ --- to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts --- -// Don't forget to use the class-validator decorators in the DTO properties. -// import { Allow } from 'class-validator'; - -export class Create<%= name %>Dto {} +export class Create<%= name %>Dto { + // Don't forget to use the class-validator decorators in the DTO properties. +} diff --git a/.hygen/property/add-to-all-db/domain/domain.ejs.t b/.hygen/property/add-to-all-db/domain/domain.ejs.t new file mode 100644 index 000000000..b9b3d1e44 --- /dev/null +++ b/.hygen/property/add-to-all-db/domain/domain.ejs.t @@ -0,0 +1,8 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/domain/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.ts +after: export class <%= name %> { +--- + +@ApiProperty() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-all-db/dto/01-create.dto.ejs.t b/.hygen/property/add-to-all-db/dto/01-create.dto.ejs.t new file mode 100644 index 000000000..32678a3b9 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/01-create.dto.ejs.t @@ -0,0 +1,19 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +after: export class Create<%= name %>Dto +--- + +<% if (isAddToDto) { -%> + @ApiProperty() + <% if (type === 'string') { -%> + @IsString() + <% } -%> + <% if (type === 'number') { -%> + @IsNumber() + <% } -%> + <% if (type === 'boolean') { -%> + @IsBoolean() + <% } -%> + <%= property %>: <%= type %>; +<% } -%> diff --git a/.hygen/property/add-to-all-db/dto/02-create-import-class-validator.dto.ejs.t b/.hygen/property/add-to-all-db/dto/02-create-import-class-validator.dto.ejs.t new file mode 100644 index 000000000..eccf7d183 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/02-create-import-class-validator.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from 'class-validator'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from 'class-validator'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/dto/03-create-boolean.dto.ejs.t b/.hygen/property/add-to-all-db/dto/03-create-boolean.dto.ejs.t new file mode 100644 index 000000000..e01c36f78 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/03-create-boolean.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsBoolean, +--- +<% if (isAddToDto && type === 'boolean') { -%> +IsBoolean, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/dto/04-create-number.dto.ejs.t b/.hygen/property/add-to-all-db/dto/04-create-number.dto.ejs.t new file mode 100644 index 000000000..7c964e110 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/04-create-number.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsNumber, +--- +<% if (isAddToDto && type === 'number') { -%> +IsNumber, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/dto/05-create-string.dto.ejs.t b/.hygen/property/add-to-all-db/dto/05-create-string.dto.ejs.t new file mode 100644 index 000000000..b2f7f3b14 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/05-create-string.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsString, +--- +<% if (isAddToDto && type === 'string') { -%> +IsString, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/dto/06-create-import-swagger.dto.ejs.t b/.hygen/property/add-to-all-db/dto/06-create-import-swagger.dto.ejs.t new file mode 100644 index 000000000..c21fa6df2 --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/06-create-import-swagger.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from '@nestjs/swagger'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from '@nestjs/swagger'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/dto/07-create-api-property.dto.ejs.t b/.hygen/property/add-to-all-db/dto/07-create-api-property.dto.ejs.t new file mode 100644 index 000000000..879a901ad --- /dev/null +++ b/.hygen/property/add-to-all-db/dto/07-create-api-property.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from '@nestjs/swagger'" +skip_if: \ApiProperty, +--- +<% if (isAddToDto) { -%> +ApiProperty, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/document/entities/schema.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/document/entities/schema.ejs.t new file mode 100644 index 000000000..711eaae23 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/document/entities/schema.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.schema.ts +after: export class <%= name %>SchemaClass +--- + +@ApiProperty() +@Prop() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-domain.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-domain.ejs.t new file mode 100644 index 000000000..a98cb745b --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-domain.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>\(\) +--- +domainEntity.<%= property %> = raw.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t new file mode 100644 index 000000000..809018949 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>SchemaClass\(\) +--- +persistenceSchema.<%= property %> = domainEntity.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity-column.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity-column.ejs.t new file mode 100644 index 000000000..a21226f02 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity-column.ejs.t @@ -0,0 +1,7 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity.ts +before: from \'typeorm\' +skip_if: \sColumn, +--- +Column, \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity.ejs.t new file mode 100644 index 000000000..bcdadb074 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/entities/entity.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity.ts +after: export class <%= name %>Entity +--- + +@ApiProperty() +@Column() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t new file mode 100644 index 000000000..9469c6461 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>\(\) +--- +domainEntity.<%= property %> = raw.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t new file mode 100644 index 000000000..b02b7b9f6 --- /dev/null +++ b/.hygen/property/add-to-all-db/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>Entity\(\) +--- +persistenceEntity.<%= property %> = domainEntity.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-all-db/prompt.js b/.hygen/property/add-to-all-db/prompt.js new file mode 100644 index 000000000..119d0ea51 --- /dev/null +++ b/.hygen/property/add-to-all-db/prompt.js @@ -0,0 +1,43 @@ +module.exports = [ + { + type: 'input', + name: 'name', + message: "Entity name (e.g. 'User')", + validate: (input) => { + if (!input.trim()) { + return 'Entity name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'input', + name: 'property', + message: "Property name (e.g. 'firstName')", + validate: (input) => { + if (!input.trim()) { + return 'Property name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'select', + name: 'type', + choices: ['string', 'number', 'boolean'], + }, + { + type: 'confirm', + name: 'isAddToDto', + message: 'Add to DTO?', + initial: true, + }, +]; diff --git a/.hygen/property/add-to-document/domain/domain.ejs.t b/.hygen/property/add-to-document/domain/domain.ejs.t new file mode 100644 index 000000000..b9b3d1e44 --- /dev/null +++ b/.hygen/property/add-to-document/domain/domain.ejs.t @@ -0,0 +1,8 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/domain/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.ts +after: export class <%= name %> { +--- + +@ApiProperty() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-document/dto/01-create.dto.ejs.t b/.hygen/property/add-to-document/dto/01-create.dto.ejs.t new file mode 100644 index 000000000..32678a3b9 --- /dev/null +++ b/.hygen/property/add-to-document/dto/01-create.dto.ejs.t @@ -0,0 +1,19 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +after: export class Create<%= name %>Dto +--- + +<% if (isAddToDto) { -%> + @ApiProperty() + <% if (type === 'string') { -%> + @IsString() + <% } -%> + <% if (type === 'number') { -%> + @IsNumber() + <% } -%> + <% if (type === 'boolean') { -%> + @IsBoolean() + <% } -%> + <%= property %>: <%= type %>; +<% } -%> diff --git a/.hygen/property/add-to-document/dto/02-create-import-class-validator.dto.ejs.t b/.hygen/property/add-to-document/dto/02-create-import-class-validator.dto.ejs.t new file mode 100644 index 000000000..eccf7d183 --- /dev/null +++ b/.hygen/property/add-to-document/dto/02-create-import-class-validator.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from 'class-validator'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from 'class-validator'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/dto/03-create-boolean.dto.ejs.t b/.hygen/property/add-to-document/dto/03-create-boolean.dto.ejs.t new file mode 100644 index 000000000..e01c36f78 --- /dev/null +++ b/.hygen/property/add-to-document/dto/03-create-boolean.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsBoolean, +--- +<% if (isAddToDto && type === 'boolean') { -%> +IsBoolean, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/dto/04-create-number.dto.ejs.t b/.hygen/property/add-to-document/dto/04-create-number.dto.ejs.t new file mode 100644 index 000000000..7c964e110 --- /dev/null +++ b/.hygen/property/add-to-document/dto/04-create-number.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsNumber, +--- +<% if (isAddToDto && type === 'number') { -%> +IsNumber, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/dto/05-create-string.dto.ejs.t b/.hygen/property/add-to-document/dto/05-create-string.dto.ejs.t new file mode 100644 index 000000000..b2f7f3b14 --- /dev/null +++ b/.hygen/property/add-to-document/dto/05-create-string.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsString, +--- +<% if (isAddToDto && type === 'string') { -%> +IsString, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/dto/06-create-import-swagger.dto.ejs.t b/.hygen/property/add-to-document/dto/06-create-import-swagger.dto.ejs.t new file mode 100644 index 000000000..c21fa6df2 --- /dev/null +++ b/.hygen/property/add-to-document/dto/06-create-import-swagger.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from '@nestjs/swagger'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from '@nestjs/swagger'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/dto/07-create-api-property.dto.ejs.t b/.hygen/property/add-to-document/dto/07-create-api-property.dto.ejs.t new file mode 100644 index 000000000..879a901ad --- /dev/null +++ b/.hygen/property/add-to-document/dto/07-create-api-property.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from '@nestjs/swagger'" +skip_if: \ApiProperty, +--- +<% if (isAddToDto) { -%> +ApiProperty, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-document/infrastructure/persistence/document/entities/schema.ejs.t b/.hygen/property/add-to-document/infrastructure/persistence/document/entities/schema.ejs.t new file mode 100644 index 000000000..711eaae23 --- /dev/null +++ b/.hygen/property/add-to-document/infrastructure/persistence/document/entities/schema.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.schema.ts +after: export class <%= name %>SchemaClass +--- + +@ApiProperty() +@Prop() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-domain.ejs.t b/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-domain.ejs.t new file mode 100644 index 000000000..a98cb745b --- /dev/null +++ b/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-domain.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>\(\) +--- +domainEntity.<%= property %> = raw.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t b/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t new file mode 100644 index 000000000..809018949 --- /dev/null +++ b/.hygen/property/add-to-document/infrastructure/persistence/document/mappers/mapper-persistence.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>SchemaClass\(\) +--- +persistenceSchema.<%= property %> = domainEntity.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-document/prompt.js b/.hygen/property/add-to-document/prompt.js new file mode 100644 index 000000000..119d0ea51 --- /dev/null +++ b/.hygen/property/add-to-document/prompt.js @@ -0,0 +1,43 @@ +module.exports = [ + { + type: 'input', + name: 'name', + message: "Entity name (e.g. 'User')", + validate: (input) => { + if (!input.trim()) { + return 'Entity name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'input', + name: 'property', + message: "Property name (e.g. 'firstName')", + validate: (input) => { + if (!input.trim()) { + return 'Property name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'select', + name: 'type', + choices: ['string', 'number', 'boolean'], + }, + { + type: 'confirm', + name: 'isAddToDto', + message: 'Add to DTO?', + initial: true, + }, +]; diff --git a/.hygen/property/add-to-relational/domain/domain.ejs.t b/.hygen/property/add-to-relational/domain/domain.ejs.t new file mode 100644 index 000000000..b9b3d1e44 --- /dev/null +++ b/.hygen/property/add-to-relational/domain/domain.ejs.t @@ -0,0 +1,8 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/domain/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.ts +after: export class <%= name %> { +--- + +@ApiProperty() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-relational/dto/01-create.dto.ejs.t b/.hygen/property/add-to-relational/dto/01-create.dto.ejs.t new file mode 100644 index 000000000..32678a3b9 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/01-create.dto.ejs.t @@ -0,0 +1,19 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +after: export class Create<%= name %>Dto +--- + +<% if (isAddToDto) { -%> + @ApiProperty() + <% if (type === 'string') { -%> + @IsString() + <% } -%> + <% if (type === 'number') { -%> + @IsNumber() + <% } -%> + <% if (type === 'boolean') { -%> + @IsBoolean() + <% } -%> + <%= property %>: <%= type %>; +<% } -%> diff --git a/.hygen/property/add-to-relational/dto/02-create-import-class-validator.dto.ejs.t b/.hygen/property/add-to-relational/dto/02-create-import-class-validator.dto.ejs.t new file mode 100644 index 000000000..eccf7d183 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/02-create-import-class-validator.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from 'class-validator'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from 'class-validator'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/dto/03-create-boolean.dto.ejs.t b/.hygen/property/add-to-relational/dto/03-create-boolean.dto.ejs.t new file mode 100644 index 000000000..e01c36f78 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/03-create-boolean.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsBoolean, +--- +<% if (isAddToDto && type === 'boolean') { -%> +IsBoolean, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/dto/04-create-number.dto.ejs.t b/.hygen/property/add-to-relational/dto/04-create-number.dto.ejs.t new file mode 100644 index 000000000..7c964e110 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/04-create-number.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsNumber, +--- +<% if (isAddToDto && type === 'number') { -%> +IsNumber, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/dto/05-create-string.dto.ejs.t b/.hygen/property/add-to-relational/dto/05-create-string.dto.ejs.t new file mode 100644 index 000000000..b2f7f3b14 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/05-create-string.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from 'class-validator'" +skip_if: \IsString, +--- +<% if (isAddToDto && type === 'string') { -%> +IsString, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/dto/06-create-import-swagger.dto.ejs.t b/.hygen/property/add-to-relational/dto/06-create-import-swagger.dto.ejs.t new file mode 100644 index 000000000..c21fa6df2 --- /dev/null +++ b/.hygen/property/add-to-relational/dto/06-create-import-swagger.dto.ejs.t @@ -0,0 +1,11 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: export class Create<%= name %>Dto +skip_if: "} from '@nestjs/swagger'" +--- +<% if (isAddToDto) { -%> +import { + // decorators here +} from '@nestjs/swagger'; +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/dto/07-create-api-property.dto.ejs.t b/.hygen/property/add-to-relational/dto/07-create-api-property.dto.ejs.t new file mode 100644 index 000000000..879a901ad --- /dev/null +++ b/.hygen/property/add-to-relational/dto/07-create-api-property.dto.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/dto/create-<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.dto.ts +before: "} from '@nestjs/swagger'" +skip_if: \ApiProperty, +--- +<% if (isAddToDto) { -%> +ApiProperty, +<% } -%> \ No newline at end of file diff --git a/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity-column.ejs.t b/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity-column.ejs.t new file mode 100644 index 000000000..a21226f02 --- /dev/null +++ b/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity-column.ejs.t @@ -0,0 +1,7 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity.ts +before: from \'typeorm\' +skip_if: \sColumn, +--- +Column, \ No newline at end of file diff --git a/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity.ejs.t b/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity.ejs.t new file mode 100644 index 000000000..bcdadb074 --- /dev/null +++ b/.hygen/property/add-to-relational/infrastructure/persistence/relational/entities/entity.ejs.t @@ -0,0 +1,9 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity.ts +after: export class <%= name %>Entity +--- + +@ApiProperty() +@Column() +<%= property %>: <%= type %>; diff --git a/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t b/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t new file mode 100644 index 000000000..9469c6461 --- /dev/null +++ b/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-domain.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>\(\) +--- +domainEntity.<%= property %> = raw.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t b/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t new file mode 100644 index 000000000..b02b7b9f6 --- /dev/null +++ b/.hygen/property/add-to-relational/infrastructure/persistence/relational/mappers/mapper-persistence.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/mappers/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.mapper.ts +after: new <%= name %>Entity\(\) +--- +persistenceEntity.<%= property %> = domainEntity.<%= property %>; \ No newline at end of file diff --git a/.hygen/property/add-to-relational/prompt.js b/.hygen/property/add-to-relational/prompt.js new file mode 100644 index 000000000..119d0ea51 --- /dev/null +++ b/.hygen/property/add-to-relational/prompt.js @@ -0,0 +1,43 @@ +module.exports = [ + { + type: 'input', + name: 'name', + message: "Entity name (e.g. 'User')", + validate: (input) => { + if (!input.trim()) { + return 'Entity name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'input', + name: 'property', + message: "Property name (e.g. 'firstName')", + validate: (input) => { + if (!input.trim()) { + return 'Property name is required'; + } + + return true; + }, + format: (input) => { + return input.trim(); + }, + }, + { + type: 'select', + name: 'type', + choices: ['string', 'number', 'boolean'], + }, + { + type: 'confirm', + name: 'isAddToDto', + message: 'Add to DTO?', + initial: true, + }, +]; diff --git a/docs/cli.md b/docs/cli.md index 1a3415bcf..bdcb73851 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -8,6 +8,10 @@ - [For document oriented database (MongoDB + Mongoose)](#for-document-oriented-database-mongodb--mongoose) - [For relational database (PostgreSQL + TypeORM)](#for-relational-database-postgresql--typeorm) - [For both databases](#for-both-databases) +- [Add property to resource](#add-property-to-resource) + - [Property for document oriented database (MongoDB + Mongoose)](#property-for-document-oriented-database-mongodb--mongoose) + - [Property for relational database (PostgreSQL + TypeORM)](#property-for-relational-database-postgresql--typeorm) + - [Property for both databases](#property-for-both-databases) --- @@ -51,6 +55,26 @@ Example: npm run generate:resource:all-db -- --name=Category ``` +## Add property to resource + +### Property for document oriented database (MongoDB + Mongoose) + +```bash +npm run add:property:to-document +``` + +### Property for relational database (PostgreSQL + TypeORM) + +```bash +npm run add:property:to-relational +``` + +### Property for both databases + +```bash +npm run add:property:to-all-db +``` + --- Previous: [Architecture](architecture.md) diff --git a/package.json b/package.json index 264a30ab9..96c252eb7 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,12 @@ "postgenerate:resource:document": "npm run lint -- --fix", "generate:resource:all-db": "hygen generate all-db-resource", "postgenerate:resource:all-db": "npm run lint -- --fix", + "add:property:to-all-db": "hygen property add-to-all-db", + "postadd:property:to-all-db": "npm run lint -- --fix", + "add:property:to-document": "hygen property add-to-document", + "postadd:property:to-document": "npm run lint -- --fix", + "add:property:to-relational": "hygen property add-to-relational", + "postadd:property:to-relational": "npm run lint -- --fix", "app:config": "ts-node -r tsconfig-paths/register ./.install-scripts/index.ts && npm install && npm run lint -- --fix", "seed:run:relational": "ts-node -r tsconfig-paths/register ./src/database/seeds/relational/run-seed.ts", "seed:run:document": "ts-node -r tsconfig-paths/register ./src/database/seeds/document/run-seed.ts", diff --git a/src/auth/dto/login-response.dto.ts b/src/auth/dto/login-response.dto.ts index a48da6c92..57d195891 100644 --- a/src/auth/dto/login-response.dto.ts +++ b/src/auth/dto/login-response.dto.ts @@ -1,17 +1,17 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { User } from '../../users/domain/user'; export class LoginResponseDto { - @ApiResponseProperty() + @ApiProperty() token: string; - @ApiResponseProperty() + @ApiProperty() refreshToken: string; - @ApiResponseProperty() + @ApiProperty() tokenExpires: number; - @ApiResponseProperty({ + @ApiProperty({ type: () => User, }) user: User; diff --git a/src/auth/dto/refresh-response.dto.ts b/src/auth/dto/refresh-response.dto.ts index 68229a615..9c2d4867a 100644 --- a/src/auth/dto/refresh-response.dto.ts +++ b/src/auth/dto/refresh-response.dto.ts @@ -1,12 +1,12 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export class RefreshResponseDto { - @ApiResponseProperty() + @ApiProperty() token: string; - @ApiResponseProperty() + @ApiProperty() refreshToken: string; - @ApiResponseProperty() + @ApiProperty() tokenExpires: number; } diff --git a/src/files/domain/file.ts b/src/files/domain/file.ts index 537bda1f2..db32ec580 100644 --- a/src/files/domain/file.ts +++ b/src/files/domain/file.ts @@ -1,4 +1,4 @@ -import { ApiProperty, ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { Allow } from 'class-validator'; import { Transform } from 'class-transformer'; import fileConfig from '../config/file.config'; @@ -17,7 +17,7 @@ export class FileType { @Allow() id: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'https://example.com/path/to/file.jpg', }) diff --git a/src/files/infrastructure/persistence/document/entities/file.schema.ts b/src/files/infrastructure/persistence/document/entities/file.schema.ts index ea304b2d8..37a3614d5 100644 --- a/src/files/infrastructure/persistence/document/entities/file.schema.ts +++ b/src/files/infrastructure/persistence/document/entities/file.schema.ts @@ -11,7 +11,7 @@ import appConfig from '../../../../../config/app.config'; import { EntityDocumentHelper } from '../../../../../utils/document-entity-helper'; import { FileConfig, FileDriver } from '../../../../config/file-config.type'; import fileConfig from '../../../../config/file.config'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export type FileSchemaDocument = HydratedDocument; @@ -22,7 +22,7 @@ export type FileSchemaDocument = HydratedDocument; }, }) export class FileSchemaClass extends EntityDocumentHelper { - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'https://example.com/path/to/file.jpg', }) diff --git a/src/files/infrastructure/persistence/relational/entities/file.entity.ts b/src/files/infrastructure/persistence/relational/entities/file.entity.ts index ad60d3001..358ef0cf9 100644 --- a/src/files/infrastructure/persistence/relational/entities/file.entity.ts +++ b/src/files/infrastructure/persistence/relational/entities/file.entity.ts @@ -10,18 +10,18 @@ import appConfig from '../../../../../config/app.config'; import { EntityRelationalHelper } from '../../../../../utils/relational-entity-helper'; import { FileConfig, FileDriver } from '../../../../config/file-config.type'; import fileConfig from '../../../../config/file.config'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; @Entity({ name: 'file' }) export class FileEntity extends EntityRelationalHelper { - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'cbcfa8b8-3a25-4adb-a9c6-e325f0d0f3ae', }) @PrimaryGeneratedColumn('uuid') id: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'https://example.com/path/to/file.jpg', }) diff --git a/src/files/infrastructure/uploader/local/dto/file-response.dto.ts b/src/files/infrastructure/uploader/local/dto/file-response.dto.ts index 2aac4dde2..b5b5b369e 100644 --- a/src/files/infrastructure/uploader/local/dto/file-response.dto.ts +++ b/src/files/infrastructure/uploader/local/dto/file-response.dto.ts @@ -1,8 +1,8 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { FileType } from '../../../../domain/file'; export class FileResponseDto { - @ApiResponseProperty({ + @ApiProperty({ type: () => FileType, }) file: FileType; diff --git a/src/files/infrastructure/uploader/s3-presigned/dto/file-response.dto.ts b/src/files/infrastructure/uploader/s3-presigned/dto/file-response.dto.ts index e4309df84..45754ee10 100644 --- a/src/files/infrastructure/uploader/s3-presigned/dto/file-response.dto.ts +++ b/src/files/infrastructure/uploader/s3-presigned/dto/file-response.dto.ts @@ -1,13 +1,13 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { FileType } from '../../../../domain/file'; export class FileResponseDto { - @ApiResponseProperty({ + @ApiProperty({ type: () => FileType, }) file: FileType; - @ApiResponseProperty({ + @ApiProperty({ type: String, }) uploadSignedUrl: string; diff --git a/src/files/infrastructure/uploader/s3/dto/file-response.dto.ts b/src/files/infrastructure/uploader/s3/dto/file-response.dto.ts index 2aac4dde2..b5b5b369e 100644 --- a/src/files/infrastructure/uploader/s3/dto/file-response.dto.ts +++ b/src/files/infrastructure/uploader/s3/dto/file-response.dto.ts @@ -1,8 +1,8 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { FileType } from '../../../../domain/file'; export class FileResponseDto { - @ApiResponseProperty({ + @ApiProperty({ type: () => FileType, }) file: FileType; diff --git a/src/roles/domain/role.ts b/src/roles/domain/role.ts index 1270c6f38..601c1d05f 100644 --- a/src/roles/domain/role.ts +++ b/src/roles/domain/role.ts @@ -1,4 +1,4 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { Allow } from 'class-validator'; import databaseConfig from '../../database/config/database.config'; import { DatabaseConfig } from '../../database/config/database-config.type'; @@ -11,13 +11,13 @@ const idType = (databaseConfig() as DatabaseConfig).isDocumentDatabase export class Role { @Allow() - @ApiResponseProperty({ + @ApiProperty({ type: idType, }) id: number | string; @Allow() - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'admin', }) diff --git a/src/roles/infrastructure/persistence/document/entities/role.schema.ts b/src/roles/infrastructure/persistence/document/entities/role.schema.ts index 6d8055b93..f3565031a 100644 --- a/src/roles/infrastructure/persistence/document/entities/role.schema.ts +++ b/src/roles/infrastructure/persistence/document/entities/role.schema.ts @@ -1,12 +1,12 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export class RoleSchema { - @ApiResponseProperty({ + @ApiProperty({ type: String, }) _id: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'admin', }) diff --git a/src/roles/infrastructure/persistence/relational/entities/role.entity.ts b/src/roles/infrastructure/persistence/relational/entities/role.entity.ts index 5aba62d42..1960ad159 100644 --- a/src/roles/infrastructure/persistence/relational/entities/role.entity.ts +++ b/src/roles/infrastructure/persistence/relational/entities/role.entity.ts @@ -1,18 +1,18 @@ import { Column, Entity, PrimaryColumn } from 'typeorm'; import { EntityRelationalHelper } from '../../../../../utils/relational-entity-helper'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; @Entity({ name: 'role', }) export class RoleEntity extends EntityRelationalHelper { - @ApiResponseProperty({ + @ApiProperty({ type: Number, }) @PrimaryColumn() id: number; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'admin', }) diff --git a/src/statuses/domain/status.ts b/src/statuses/domain/status.ts index 5625aba90..a194a281c 100644 --- a/src/statuses/domain/status.ts +++ b/src/statuses/domain/status.ts @@ -1,4 +1,4 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import { Allow } from 'class-validator'; import databaseConfig from '../../database/config/database.config'; import { DatabaseConfig } from '../../database/config/database-config.type'; @@ -11,13 +11,13 @@ const idType = (databaseConfig() as DatabaseConfig).isDocumentDatabase export class Status { @Allow() - @ApiResponseProperty({ + @ApiProperty({ type: idType, }) id: number | string; @Allow() - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'active', }) diff --git a/src/statuses/infrastructure/persistence/document/entities/status.schema.ts b/src/statuses/infrastructure/persistence/document/entities/status.schema.ts index 34ffdc558..4c6b819ff 100644 --- a/src/statuses/infrastructure/persistence/document/entities/status.schema.ts +++ b/src/statuses/infrastructure/persistence/document/entities/status.schema.ts @@ -1,12 +1,12 @@ -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export class StatusSchema { - @ApiResponseProperty({ + @ApiProperty({ type: String, }) _id: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'active', }) diff --git a/src/statuses/infrastructure/persistence/relational/entities/status.entity.ts b/src/statuses/infrastructure/persistence/relational/entities/status.entity.ts index 2c4d9597d..aa49c669e 100644 --- a/src/statuses/infrastructure/persistence/relational/entities/status.entity.ts +++ b/src/statuses/infrastructure/persistence/relational/entities/status.entity.ts @@ -1,19 +1,19 @@ import { Column, Entity, PrimaryColumn } from 'typeorm'; import { EntityRelationalHelper } from '../../../../../utils/relational-entity-helper'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; @Entity({ name: 'status', }) export class StatusEntity extends EntityRelationalHelper { - @ApiResponseProperty({ + @ApiProperty({ type: Number, }) @PrimaryColumn() id: number; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'active', }) diff --git a/src/users/domain/user.ts b/src/users/domain/user.ts index f5a92adf8..5e55bbe73 100644 --- a/src/users/domain/user.ts +++ b/src/users/domain/user.ts @@ -2,7 +2,7 @@ import { Exclude, Expose } from 'class-transformer'; import { FileType } from '../../files/domain/file'; import { Role } from '../../roles/domain/role'; import { Status } from '../../statuses/domain/status'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; import databaseConfig from '../../database/config/database.config'; import { DatabaseConfig } from '../../database/config/database-config.type'; @@ -13,12 +13,12 @@ const idType = (databaseConfig() as DatabaseConfig).isDocumentDatabase // export class User { - @ApiResponseProperty({ + @ApiProperty({ type: idType, }) id: number | string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'john.doe@example.com', }) @@ -31,53 +31,53 @@ export class User { @Exclude({ toPlainOnly: true }) previousPassword?: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'email', }) @Expose({ groups: ['me', 'admin'] }) provider: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: '1234567890', }) @Expose({ groups: ['me', 'admin'] }) socialId?: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'John', }) firstName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'Doe', }) lastName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => FileType, }) photo?: FileType | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => Role, }) role?: Role | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => Status, }) status?: Status; - @ApiResponseProperty() + @ApiProperty() createdAt: Date; - @ApiResponseProperty() + @ApiProperty() updatedAt: Date; - @ApiResponseProperty() + @ApiProperty() deletedAt: Date; } diff --git a/src/users/dto/create-user.dto.ts b/src/users/dto/create-user.dto.ts index 736b93d30..f63e4b970 100644 --- a/src/users/dto/create-user.dto.ts +++ b/src/users/dto/create-user.dto.ts @@ -1,6 +1,12 @@ import { Transform, Type } from 'class-transformer'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; -import { IsEmail, IsNotEmpty, IsOptional, MinLength } from 'class-validator'; +import { + // decorators here + IsEmail, + IsNotEmpty, + IsOptional, + MinLength, +} from 'class-validator'; import { FileDto } from '../../files/dto/file.dto'; import { RoleDto } from '../../roles/dto/role.dto'; import { StatusDto } from '../../statuses/dto/status.dto'; diff --git a/src/users/infrastructure/persistence/document/entities/user.schema.ts b/src/users/infrastructure/persistence/document/entities/user.schema.ts index dae84731d..879bdb3ec 100644 --- a/src/users/infrastructure/persistence/document/entities/user.schema.ts +++ b/src/users/infrastructure/persistence/document/entities/user.schema.ts @@ -10,7 +10,7 @@ import { FileSchemaClass } from '../../../../../files/infrastructure/persistence import { EntityDocumentHelper } from '../../../../../utils/document-entity-helper'; import { StatusSchema } from '../../../../../statuses/infrastructure/persistence/document/entities/status.schema'; import { RoleSchema } from '../../../../../roles/infrastructure/persistence/document/entities/role.schema'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export type UserSchemaDocument = HydratedDocument; @@ -22,7 +22,7 @@ export type UserSchemaDocument = HydratedDocument; }, }) export class UserSchemaClass extends EntityDocumentHelper { - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'john.doe@example.com', }) @@ -40,7 +40,7 @@ export class UserSchemaClass extends EntityDocumentHelper { @Exclude({ toPlainOnly: true }) previousPassword?: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'email', }) @@ -50,7 +50,7 @@ export class UserSchemaClass extends EntityDocumentHelper { }) provider: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: '1234567890', }) @@ -61,7 +61,7 @@ export class UserSchemaClass extends EntityDocumentHelper { }) socialId?: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'John', }) @@ -70,7 +70,7 @@ export class UserSchemaClass extends EntityDocumentHelper { }) firstName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'Doe', }) @@ -79,7 +79,7 @@ export class UserSchemaClass extends EntityDocumentHelper { }) lastName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => FileSchemaClass, }) @Prop({ @@ -88,7 +88,7 @@ export class UserSchemaClass extends EntityDocumentHelper { @Type(() => FileSchemaClass) photo?: FileSchemaClass | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => RoleSchema, }) @Prop({ @@ -96,7 +96,7 @@ export class UserSchemaClass extends EntityDocumentHelper { }) role?: RoleSchema | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => StatusSchema, }) @Prop({ @@ -104,15 +104,15 @@ export class UserSchemaClass extends EntityDocumentHelper { }) status?: StatusSchema; - @ApiResponseProperty() + @ApiProperty() @Prop({ default: now }) createdAt: Date; - @ApiResponseProperty() + @ApiProperty() @Prop({ default: now }) updatedAt: Date; - @ApiResponseProperty() + @ApiProperty() @Prop() deletedAt: Date; } diff --git a/src/users/infrastructure/persistence/document/mappers/user.mapper.ts b/src/users/infrastructure/persistence/document/mappers/user.mapper.ts index d3613aa6b..3bc934e0e 100644 --- a/src/users/infrastructure/persistence/document/mappers/user.mapper.ts +++ b/src/users/infrastructure/persistence/document/mappers/user.mapper.ts @@ -9,77 +9,78 @@ import { StatusSchema } from '../../../../../statuses/infrastructure/persistence export class UserMapper { static toDomain(raw: UserSchemaClass): User { - const user = new User(); - user.id = raw._id.toString(); - user.email = raw.email; - user.password = raw.password; - user.previousPassword = raw.previousPassword; - user.provider = raw.provider; - user.socialId = raw.socialId; - user.firstName = raw.firstName; - user.lastName = raw.lastName; + const domainEntity = new User(); + domainEntity.id = raw._id.toString(); + domainEntity.email = raw.email; + domainEntity.password = raw.password; + domainEntity.previousPassword = raw.previousPassword; + domainEntity.provider = raw.provider; + domainEntity.socialId = raw.socialId; + domainEntity.firstName = raw.firstName; + domainEntity.lastName = raw.lastName; if (raw.photo) { - user.photo = FileMapper.toDomain(raw.photo); + domainEntity.photo = FileMapper.toDomain(raw.photo); } else if (raw.photo === null) { - user.photo = null; + domainEntity.photo = null; } if (raw.role) { - user.role = new Role(); - user.role.id = raw.role._id; + domainEntity.role = new Role(); + domainEntity.role.id = raw.role._id; } if (raw.status) { - user.status = new Status(); - user.status.id = raw.status._id; + domainEntity.status = new Status(); + domainEntity.status.id = raw.status._id; } - user.createdAt = raw.createdAt; - user.updatedAt = raw.updatedAt; - user.deletedAt = raw.deletedAt; - return user; + domainEntity.createdAt = raw.createdAt; + domainEntity.updatedAt = raw.updatedAt; + domainEntity.deletedAt = raw.deletedAt; + + return domainEntity; } - static toPersistence(user: User): UserSchemaClass { + static toPersistence(domainEntity: User): UserSchemaClass { let role: RoleSchema | undefined = undefined; - if (user.role) { + if (domainEntity.role) { role = new RoleSchema(); - role._id = user.role.id.toString(); + role._id = domainEntity.role.id.toString(); } let photo: FileSchemaClass | undefined = undefined; - if (user.photo) { + if (domainEntity.photo) { photo = new FileSchemaClass(); - photo._id = user.photo.id; - photo.path = user.photo.path; + photo._id = domainEntity.photo.id; + photo.path = domainEntity.photo.path; } let status: StatusSchema | undefined = undefined; - if (user.status) { + if (domainEntity.status) { status = new StatusSchema(); - status._id = user.status.id.toString(); + status._id = domainEntity.status.id.toString(); } - const userEntity = new UserSchemaClass(); - if (user.id && typeof user.id === 'string') { - userEntity._id = user.id; + const persistenceSchema = new UserSchemaClass(); + if (domainEntity.id && typeof domainEntity.id === 'string') { + persistenceSchema._id = domainEntity.id; } - userEntity.email = user.email; - userEntity.password = user.password; - userEntity.previousPassword = user.previousPassword; - userEntity.provider = user.provider; - userEntity.socialId = user.socialId; - userEntity.firstName = user.firstName; - userEntity.lastName = user.lastName; - userEntity.photo = photo; - userEntity.role = role; - userEntity.status = status; - userEntity.createdAt = user.createdAt; - userEntity.updatedAt = user.updatedAt; - userEntity.deletedAt = user.deletedAt; - return userEntity; + persistenceSchema.email = domainEntity.email; + persistenceSchema.password = domainEntity.password; + persistenceSchema.previousPassword = domainEntity.previousPassword; + persistenceSchema.provider = domainEntity.provider; + persistenceSchema.socialId = domainEntity.socialId; + persistenceSchema.firstName = domainEntity.firstName; + persistenceSchema.lastName = domainEntity.lastName; + persistenceSchema.photo = photo; + persistenceSchema.role = role; + persistenceSchema.status = status; + persistenceSchema.createdAt = domainEntity.createdAt; + persistenceSchema.updatedAt = domainEntity.updatedAt; + persistenceSchema.deletedAt = domainEntity.deletedAt; + return persistenceSchema; } } diff --git a/src/users/infrastructure/persistence/relational/entities/user.entity.ts b/src/users/infrastructure/persistence/relational/entities/user.entity.ts index f20c47efb..637d4d807 100644 --- a/src/users/infrastructure/persistence/relational/entities/user.entity.ts +++ b/src/users/infrastructure/persistence/relational/entities/user.entity.ts @@ -22,19 +22,19 @@ import { EntityRelationalHelper } from '../../../../../utils/relational-entity-h // We duplicate these rules because you can choose not to use adapters // in your project and return an ORM entity directly in response. import { Exclude, Expose } from 'class-transformer'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; @Entity({ name: 'user', }) export class UserEntity extends EntityRelationalHelper { - @ApiResponseProperty({ + @ApiProperty({ type: Number, }) @PrimaryGeneratedColumn() id: number; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'john.doe@example.com', }) @@ -56,7 +56,7 @@ export class UserEntity extends EntityRelationalHelper { this.previousPassword = this.password; } - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'email', }) @@ -64,7 +64,7 @@ export class UserEntity extends EntityRelationalHelper { @Expose({ groups: ['me', 'admin'] }) provider: string; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: '1234567890', }) @@ -73,7 +73,7 @@ export class UserEntity extends EntityRelationalHelper { @Expose({ groups: ['me', 'admin'] }) socialId?: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'John', }) @@ -81,7 +81,7 @@ export class UserEntity extends EntityRelationalHelper { @Column({ type: String, nullable: true }) firstName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: String, example: 'Doe', }) @@ -89,7 +89,7 @@ export class UserEntity extends EntityRelationalHelper { @Column({ type: String, nullable: true }) lastName: string | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => FileEntity, }) @OneToOne(() => FileEntity, { @@ -98,7 +98,7 @@ export class UserEntity extends EntityRelationalHelper { @JoinColumn() photo?: FileEntity | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => RoleEntity, }) @ManyToOne(() => RoleEntity, { @@ -106,7 +106,7 @@ export class UserEntity extends EntityRelationalHelper { }) role?: RoleEntity | null; - @ApiResponseProperty({ + @ApiProperty({ type: () => StatusEntity, }) @ManyToOne(() => StatusEntity, { @@ -114,15 +114,15 @@ export class UserEntity extends EntityRelationalHelper { }) status?: StatusEntity; - @ApiResponseProperty() + @ApiProperty() @CreateDateColumn() createdAt: Date; - @ApiResponseProperty() + @ApiProperty() @UpdateDateColumn() updatedAt: Date; - @ApiResponseProperty() + @ApiProperty() @DeleteDateColumn() deletedAt: Date; } diff --git a/src/users/infrastructure/persistence/relational/mappers/user.mapper.ts b/src/users/infrastructure/persistence/relational/mappers/user.mapper.ts index c459583d7..f73479055 100644 --- a/src/users/infrastructure/persistence/relational/mappers/user.mapper.ts +++ b/src/users/infrastructure/persistence/relational/mappers/user.mapper.ts @@ -7,68 +7,68 @@ import { UserEntity } from '../entities/user.entity'; export class UserMapper { static toDomain(raw: UserEntity): User { - const user = new User(); - user.id = raw.id; - user.email = raw.email; - user.password = raw.password; - user.previousPassword = raw.previousPassword; - user.provider = raw.provider; - user.socialId = raw.socialId; - user.firstName = raw.firstName; - user.lastName = raw.lastName; + const domainEntity = new User(); + domainEntity.id = raw.id; + domainEntity.email = raw.email; + domainEntity.password = raw.password; + domainEntity.previousPassword = raw.previousPassword; + domainEntity.provider = raw.provider; + domainEntity.socialId = raw.socialId; + domainEntity.firstName = raw.firstName; + domainEntity.lastName = raw.lastName; if (raw.photo) { - user.photo = FileMapper.toDomain(raw.photo); + domainEntity.photo = FileMapper.toDomain(raw.photo); } - user.role = raw.role; - user.status = raw.status; - user.createdAt = raw.createdAt; - user.updatedAt = raw.updatedAt; - user.deletedAt = raw.deletedAt; - return user; + domainEntity.role = raw.role; + domainEntity.status = raw.status; + domainEntity.createdAt = raw.createdAt; + domainEntity.updatedAt = raw.updatedAt; + domainEntity.deletedAt = raw.deletedAt; + return domainEntity; } - static toPersistence(user: User): UserEntity { + static toPersistence(domainEntity: User): UserEntity { let role: RoleEntity | undefined = undefined; - if (user.role) { + if (domainEntity.role) { role = new RoleEntity(); - role.id = Number(user.role.id); + role.id = Number(domainEntity.role.id); } let photo: FileEntity | undefined | null = undefined; - if (user.photo) { + if (domainEntity.photo) { photo = new FileEntity(); - photo.id = user.photo.id; - photo.path = user.photo.path; - } else if (user.photo === null) { + photo.id = domainEntity.photo.id; + photo.path = domainEntity.photo.path; + } else if (domainEntity.photo === null) { photo = null; } let status: StatusEntity | undefined = undefined; - if (user.status) { + if (domainEntity.status) { status = new StatusEntity(); - status.id = Number(user.status.id); + status.id = Number(domainEntity.status.id); } - const userEntity = new UserEntity(); - if (user.id && typeof user.id === 'number') { - userEntity.id = user.id; + const persistenceEntity = new UserEntity(); + if (domainEntity.id && typeof domainEntity.id === 'number') { + persistenceEntity.id = domainEntity.id; } - userEntity.email = user.email; - userEntity.password = user.password; - userEntity.previousPassword = user.previousPassword; - userEntity.provider = user.provider; - userEntity.socialId = user.socialId; - userEntity.firstName = user.firstName; - userEntity.lastName = user.lastName; - userEntity.photo = photo; - userEntity.role = role; - userEntity.status = status; - userEntity.createdAt = user.createdAt; - userEntity.updatedAt = user.updatedAt; - userEntity.deletedAt = user.deletedAt; - return userEntity; + persistenceEntity.email = domainEntity.email; + persistenceEntity.password = domainEntity.password; + persistenceEntity.previousPassword = domainEntity.previousPassword; + persistenceEntity.provider = domainEntity.provider; + persistenceEntity.socialId = domainEntity.socialId; + persistenceEntity.firstName = domainEntity.firstName; + persistenceEntity.lastName = domainEntity.lastName; + persistenceEntity.photo = photo; + persistenceEntity.role = role; + persistenceEntity.status = status; + persistenceEntity.createdAt = domainEntity.createdAt; + persistenceEntity.updatedAt = domainEntity.updatedAt; + persistenceEntity.deletedAt = domainEntity.deletedAt; + return persistenceEntity; } } diff --git a/src/utils/dto/infinity-pagination-response.dto.ts b/src/utils/dto/infinity-pagination-response.dto.ts index ada3f771a..91088ebec 100644 --- a/src/utils/dto/infinity-pagination-response.dto.ts +++ b/src/utils/dto/infinity-pagination-response.dto.ts @@ -1,5 +1,5 @@ import { Type } from '@nestjs/common'; -import { ApiResponseProperty } from '@nestjs/swagger'; +import { ApiProperty } from '@nestjs/swagger'; export class InfinityPaginationResponseDto { data: T[]; @@ -8,10 +8,10 @@ export class InfinityPaginationResponseDto { export function InfinityPaginationResponse(classReference: Type) { abstract class Pagination { - @ApiResponseProperty({ type: [classReference] }) + @ApiProperty({ type: [classReference] }) data!: T[]; - @ApiResponseProperty({ + @ApiProperty({ type: Boolean, example: true, })