tsoa-custom-decorators
Version:
Build swagger-compliant REST APIs using TypeScript and Node
156 lines (149 loc) • 5.16 kB
text/typescript
import { Request, Query, Path, Header, Body, BodyProp } from '../../../src/decorators/parameter';
import { IsInt, IsFloat } from '../../../src/decorators/validations';
import { Get, Post } from '../../../src/decorators/methods';
import { Route } from '../../../src/decorators/route';
import { ParameterTestModel, Gender } from '../testModel';
export class ParameterController {
/**
* Get test paramater
*
* @param {string} firstname Firstname description
* @param {string} lastname Lastname description
* @param {number} age Age description
* @param {number} weight Weight description
* @param {boolean} human Human description
* @param {Gender} gender Gender description
*/
public async getQuery(
firstname: string,
lastname: string,
age: number,
weight: number,
human: boolean,
gender: Gender
): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
firstname,
lastname,
age,
weight,
human,
gender
});
}
/**
* Path test paramater
*
* @param {string} firstname Firstname description
* @param {string} lastname Lastname description
* @param {number} age Age description
* @param {number} weight Weight description
* @param {boolean} human Human description
* @param {Gender} gender Gender description
*/
public async getPath(
firstname: string,
lastname: string,
age: number,
weight: number,
human: boolean,
gender: Gender
): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
firstname,
lastname,
age,
weight,
human,
gender
});
}
/**
* Header test paramater
*
* @param {string} firstname Firstname description
* @param {string} lastname Lastname description
* @param {number} age Age description
* @param {number} weight Weight description
* @param {boolean} human Human description
* @param {Gender} gender Gender description
*/
public async getHeader(
firstname: string,
lastname: string,
age: number,
weight: number,
human: boolean,
gender: Gender
): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
firstname,
lastname,
age,
weight,
human,
gender
});
}
/**
* Request test paramater
*
* @param {object} request Request description
*/
public async getRequest( request: any): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
age: Number(request.query.age),
firstname: request.query.firstname,
gender: request.query.gender === 'MALE' ? Gender.MALE : Gender.FEMALE,
human: Boolean(request.query.age),
lastname: request.query.lastname,
weight: Number(request.query.weight),
});
}
/**
* Body test paramater
*
* @param {object} body Body description
*/
public async getBody( body: ParameterTestModel): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
age: body.age,
firstname: body.firstname,
gender: body.gender,
human: body.human,
lastname: body.lastname,
weight: body.weight
});
}
/**
* @param {string} firstname firstname description
* @param {string} lastname lastname description
* @param {number} age age description
* @param {number} weight weight description
* @param {boolean} human human description
* @param {Gender} gender Gender description
*/
public async getBodyProps(
firstname: string,
lastname: string,
age: number,
weight: number,
human: boolean,
gender: Gender): Promise<ParameterTestModel> {
return Promise.resolve<ParameterTestModel>({
age: age,
firstname: firstname,
human: human,
lastname: lastname,
weight,
gender
});
}
}