- Notifications
You must be signed in to change notification settings - Fork0
Decorators to copy swagger & class-validator metadata from one class to another
License
Re-Quant/api-entity-ref
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Decorators to copy@nestjs/swagger,class-validator andclass-transformer metadata from one class to another.
Notice: If you have any propositions feel free to make an issue or create a pull request.
yarn add @z-brain/api-entity-ref
ornpm i -s @z-brain/api-entity-ref
dtos/account-base.dto.ts
import{ApiPropertyRef}from'@z-brain/api-entity-ref';import{Account}from'../types';exportabstractclassAccountBaseDtoimplementsOmit<Account,'id'>{ @ApiPropertyRef()publicemail!:string; @ApiPropertyRef()publicfirstName?:string;}
dtos/account-create.dto.ts
import{ApiEntityRef,ApiPropertyRef}from'@z-brain/api-entity-ref';import{EEntityValidationGroup}from'@lib/common/enums';import{Account}from'../types';import{AccountBaseDto}from'./account-base.dto';@ApiEntityRef(Account,{groups:[EEntityValidationGroup.Create]})exportclassAccountCreateDtoextendsAccountBaseDto{ @ApiPropertyRef()publiclastName?:string;}
dtos/account-update.dto.ts
import{Allow,IsNotEmpty}from'class-validator';import{ApiEntityRef}from'@z-brain/api-entity-ref';import{IDInt}from'@lib/common/types';import{EEntityValidationGroup}from'@lib/common/enums';import{Account}from'../types';import{AccountBaseDto}from'./account-base.dto';@ApiEntityRef(Account,{groups:[EEntityValidationGroup.Update]})exportclassAccountUpdateDtoextendsAccountBaseDtoimplementsOmit<Account,'fullName'>{ @Allow() @IsNotEmpty()publicid!:IDInt;}
types/account.entity.ts
import{ApiProperty,ApiPropertyOptional,ApiResponseProperty}from'@nestjs/swagger';import{IsEmail,IsOptional,IsString,Length}from'class-validator';lmport{Type}from'class-transformer';import{IDInt}from'@lib/common/types';import{DEFAULT_EMAIL_MAX_LEN,DEFAULT_EMAIL_MIN_LEN,DEFAULT_NAME_MAX_LEN,DEFAULT_NAME_MIN_LEN,}from'@lib/common/db.constants';import{IsUnique}from'@lib/common/validators';import{EEntityValidationGroup}from'@lib/common/enums';classFirstLast{ @ApiPropertyOptional({example:'Ivan',maxLength:DEFAULT_NAME_MAX_LEN,minLength:DEFAULT_NAME_MIN_LEN,}) @IsOptional({always:true}) @IsString({always:true}) @Length(DEFAULT_NAME_MIN_LEN,DEFAULT_NAME_MAX_LEN,{always:true}) @Column({length:DEFAULT_NAME_MAX_LEN,nullable:true})publicfirst!:string; @ApiPropertyOptional({example:'Trump',maxLength:DEFAULT_NAME_MAX_LEN,minLength:DEFAULT_NAME_MIN_LEN,}) @IsOptional({always:true}) @IsString({always:true}) @Length(DEFAULT_NAME_MIN_LEN,DEFAULT_NAME_MAX_LEN,{always:true}) @Column({length:DEFAULT_NAME_MAX_LEN,nullable:true})publiclast!:string;}@Entity()exportclassAccount{publicstaticreadonlyNAMELESS_FULL_NAME:string='Nameless User'; @ApiResponseProperty({example:1234}) @PrimaryGeneratedColumn('increment',{unsigned:true})publicid!:IDInt; @ApiProperty({example:'ivan@gmail.com',maxLength:DEFAULT_NAME_MAX_LEN,minLength:DEFAULT_NAME_MIN_LEN,uniqueItems:true,}) @Column({length:DEFAULT_EMAIL_MAX_LEN,unique:true}) @IsOptional({groups:[EEntityValidationGroup.Update]}) @IsEmail(undefined,{always:true}) @IsUnique(Account,undefined,{always:true}) @Length(DEFAULT_EMAIL_MIN_LEN,DEFAULT_EMAIL_MAX_LEN,{always:true})publicemail!:string; @Column(()=>Name) @Type(()=>Name)publicname:FirstLast; @ApiResponseProperty({example:'Ivan Trump',})publicgetfullName():string{returnthis.name.first&&this.name.last ?`${this.name.first}${this.name.last}` :this.name.first||this.name.last||(this.constructorastypeofAccount).NAMELESS_FULL_NAME;}}
cd /code/z-braingit clone git@github.com:z-brain/api-entity-ref.gitcd api-entity-refyarn install
Install NVM
Use
.nvmrcfile one of the next ways:- Execute
nvm usein the project root directory - InstallNVM Loader and your .nvmrc will be loaded automatically when you open the terminal.

- Execute
npm run build
- Just show problems
npm run lint - Fix problems if it is possible
npm run lint:fix
All tests
npm run testnpm run test:watchSpecific tests
npm run test -- src/my.spec.tsnpm run test:watch -- src/my.spec.ts
NPM Token:npm_ggEB......6ZRs
CI configuration details here:.github/workflows/npmpublish.yml
npm run pre-push \&& npm version patch -m'Update package version version to %s' \&& npm run gen-public-package.json \&& cp README.md dist/ \&& npm publish dist --access public \&& git push --no-verify&& git push --tags --no-verify
yarn run build:local- Then you can install a local package build from path
file:.../api-entity-ref/dist.
Anton Korniychuk |
|---|
About
Decorators to copy swagger & class-validator metadata from one class to another
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.