Skip to content

Commit

Permalink
feat(mvc): Request accept expression to get property from Request
Browse files Browse the repository at this point in the history
  • Loading branch information
Romakita committed Aug 19, 2019
1 parent ae03ff4 commit 5ec5b92
Showing 1 changed file with 26 additions and 5 deletions.
31 changes: 26 additions & 5 deletions packages/common/src/mvc/decorators/params/request.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import {Type} from "@tsed/core";
import * as Express from "express";
import {EXPRESS_REQUEST} from "../../../filters/constants";
import {ParamTypes} from "../../models/ParamTypes";
import {UseFilter} from "./useFilter";
import {mapParamsOptions} from "./utils/mapParamsOptions";
import {IParamOptions} from "../../interfaces/IParamOptions";

export type Request = Express.Request;
export type Req = Express.Request;
Expand All @@ -10,8 +13,14 @@ export type Req = Express.Request;
* @returns {function(Function, (string|symbol), number): void}
* @decorator
*/
export function Request(): ParameterDecorator {
return Req();
export function Request(expression: string, useType: Type<any>): ParameterDecorator;
export function Request(expression: string): ParameterDecorator;
export function Request(useType: Type<any>): ParameterDecorator;
export function Request(options: IParamOptions<any>): ParameterDecorator;
export function Request(): ParameterDecorator;
export function Request(...args: any[]): ParameterDecorator {
// @ts-ignore
return Req(...args);
}

/**
Expand All @@ -20,6 +29,18 @@ export function Request(): ParameterDecorator {
* @decorator
* @alias Request
*/
export function Req(): ParameterDecorator {
return UseFilter(EXPRESS_REQUEST);
export function Req(expression: string, useType: Type<any>): ParameterDecorator;
export function Req(expression: string): ParameterDecorator;
export function Req(useType: Type<any>): ParameterDecorator;
export function Req(options: IParamOptions<any>): ParameterDecorator;
export function Req(): ParameterDecorator;
export function Req(...args: any[]): ParameterDecorator {
const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);

return UseFilter(ParamTypes.REQUEST, {
expression,
useType,
useConverter,
useValidation
});
}

0 comments on commit 5ec5b92

Please # to comment.