@tunnel-cast/nestjs
Version:
## About This is a Tunnel-Cast - NestJS integration package, wrap the `cast` application into the `NestJS` building blocks.
105 lines (70 loc) • 2.33 kB
Markdown
# Tunnel Cast - NestJS
## About
This is a Tunnel-Cast - NestJS integration package, wrap the `cast` application into the `NestJS` building blocks.
<br>
<br>
## Install
```shell
npm i -cast/nestjs
```
> *Note:* <br>
> This package required the peerDependencies of a nest project.
<br>
<br>
## Example
The first step is to define a model for the object intend to be cast. <br>
Then apply it in the nest controller using a parameter decorator or an interceptor.
<br>
#### Define models using tunnel-cast decorators :
<br>
```ts
// file: cats/cast-models/index.ts
import { String, Number, Required, Default, Parsing } from '@tunnel-cast/common';
export class GetAllCats_Query {
.Min(1) // - validation : 1 <= value
.Max(15) // - validation : value < 15
// - parsing (pre-validation action) : apply Number constructor
// - optional
// - default : 10
// - type : number
limit: number;
// - optional
// - default : 0
.Min(0) // - validation : 0 <= value
// - parsing (pre-validation action) : apply Number constructor
// - type : number
skip: number;
}
export class GetCatsByType_Params {
// - required
.Enums([ // - validation : value in { 'house_cat', 'bobcat', 'tiger' }
'house_cat',
'bobcat',
'tiger'
])
// - type : string
type: string;
}
```
<br>
#### Use the cast parameter-decorators with the defined models :
<br>
```ts
// file: cats/cats.controller.ts
import { Controller, Get } from '@nestjs/common';
import { CastQuery, CastParam } from '@tunnel-cast/nestjs/parameter-decorators';
import { GetAllCats, GetCatsByType} from './cast-models'
export class CatsController {
getCats( query: GetAllCats_Query) {
// "cast" process passed successfully
// ...
}
getCatsByType( params: GetCatsByType_Params) {
// "cast" process passed successfully
// ...
}
}
```