Skip to content

Commit 5e03106

Browse files
author
chaowlert
committed
allow default options
1 parent 6b5a649 commit 5e03106

14 files changed

+96
-47
lines changed

src/RoutingControllers.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
import {ActionParameterHandler} from "./ActionParameterHandler";
2-
import {MetadataBuilder} from "./metadata-builder/MetadataBuilder";
3-
import {ActionMetadata} from "./metadata/ActionMetadata";
41
import {Action} from "./Action";
2+
import {ActionMetadata} from "./metadata/ActionMetadata";
3+
import {ActionParameterHandler} from "./ActionParameterHandler";
54
import {Driver} from "./driver/Driver";
6-
import {isPromiseLike} from "./util/isPromiseLike";
7-
import {runInSequence} from "./util/runInSequence";
5+
import {InterceptorInterface} from "./InterceptorInterface";
86
import {InterceptorMetadata} from "./metadata/InterceptorMetadata";
7+
import {MetadataBuilder} from "./metadata-builder/MetadataBuilder";
8+
import { RoutingControllersOptions } from "./RoutingControllersOptions";
99
import {getFromContainer} from "./container";
10-
import {InterceptorInterface} from "./InterceptorInterface";
10+
import {isPromiseLike} from "./util/isPromiseLike";
11+
import {runInSequence} from "./util/runInSequence";
1112

1213
/**
1314
* Registers controllers and middlewares in the given server framework.
@@ -37,9 +38,9 @@ export class RoutingControllers {
3738
// Constructor
3839
// -------------------------------------------------------------------------
3940

40-
constructor(private driver: Driver) {
41+
constructor(private driver: Driver, private options: RoutingControllersOptions) {
4142
this.parameterHandler = new ActionParameterHandler(driver);
42-
this.metadataBuilder = new MetadataBuilder();
43+
this.metadataBuilder = new MetadataBuilder(options);
4344
}
4445

4546
// -------------------------------------------------------------------------

src/RoutingControllersOptions.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import {ClassTransformOptions} from "class-transformer";
2-
import {ValidatorOptions} from "class-validator";
31
import {AuthorizationChecker} from "./AuthorizationChecker";
2+
import {ClassTransformOptions} from "class-transformer";
43
import {CurrentUserChecker} from "./CurrentUserChecker";
4+
import { ParamOptions } from "./decorator-options/ParamOptions";
5+
import {ValidatorOptions} from "class-validator";
56

67
/**
78
* Routing controller initialization options.
@@ -85,4 +86,28 @@ export interface RoutingControllersOptions {
8586
*/
8687
currentUserChecker?: CurrentUserChecker;
8788

89+
/**
90+
* Default settings
91+
*/
92+
defaults?: {
93+
/**
94+
* If set, all null response will return specified status code by default
95+
*/
96+
nullResultCode?: number;
97+
98+
/**
99+
* If set, all undefined response will return specified status code by default
100+
*/
101+
undefinedResultCode?: number;
102+
103+
/**
104+
* Default param options
105+
*/
106+
paramOptions?: {
107+
/**
108+
* If true, all non-set parameters will be required by default
109+
*/
110+
required?: boolean;
111+
};
112+
};
88113
}

src/decorator/Body.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function Body(options?: BodyOptions): Function {
1313
method: methodName,
1414
index: index,
1515
parse: false,
16-
required: options ? options.required : false,
16+
required: options ? options.required : undefined,
1717
classTransform: options ? options.transform : undefined,
1818
validate: options ? options.validate : undefined,
1919
explicitType: options ? options.type : undefined,

src/decorator/BodyParam.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {getMetadataArgsStorage} from "../index";
21
import {ParamOptions} from "../decorator-options/ParamOptions";
2+
import {getMetadataArgsStorage} from "../index";
33

44
/**
55
* Takes partial data of the request body.
@@ -14,7 +14,7 @@ export function BodyParam(name: string, options?: ParamOptions): Function {
1414
index: index,
1515
name: name,
1616
parse: options ? options.parse : false,
17-
required: options ? options.required : false,
17+
required: options ? options.required : undefined,
1818
explicitType: options ? options.type : undefined,
1919
classTransform: options ? options.transform : undefined,
2020
validate: options ? options.validate : undefined

src/decorator/CookieParam.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {getMetadataArgsStorage} from "../index";
21
import {ParamOptions} from "../decorator-options/ParamOptions";
2+
import {getMetadataArgsStorage} from "../index";
33

44
/**
55
* Injects a request's cookie value to the controller action parameter.
@@ -14,7 +14,7 @@ export function CookieParam(name: string, options?: ParamOptions) {
1414
index: index,
1515
name: name,
1616
parse: options ? options.parse : false,
17-
required: options ? options.required : false,
17+
required: options ? options.required : undefined,
1818
explicitType: options ? options.type : undefined,
1919
classTransform: options ? options.transform : undefined,
2020
validate: options ? options.validate : undefined

src/decorator/CurrentUser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export function CurrentUser(options?: { required?: boolean }) {
1212
method: methodName,
1313
index: index,
1414
parse: false,
15-
required: options ? options.required : false
15+
required: options ? options.required : undefined
1616
});
1717
};
1818
}

src/decorator/HeaderParam.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {getMetadataArgsStorage} from "../index";
21
import {ParamOptions} from "../decorator-options/ParamOptions";
2+
import {getMetadataArgsStorage} from "../index";
33

44
/**
55
* Injects a request's http header value to the controller action parameter.
@@ -14,7 +14,7 @@ export function HeaderParam(name: string, options?: ParamOptions): Function {
1414
index: index,
1515
name: name,
1616
parse: options ? options.parse : false,
17-
required: options ? options.required : false,
17+
required: options ? options.required : undefined,
1818
classTransform: options ? options.transform : undefined,
1919
explicitType: options ? options.type : undefined,
2020
validate: options ? options.validate : undefined

src/decorator/QueryParam.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {getMetadataArgsStorage} from "../index";
21
import {ParamOptions} from "../decorator-options/ParamOptions";
2+
import {getMetadataArgsStorage} from "../index";
33

44
/**
55
* Injects a request's query parameter value to the controller action parameter.
@@ -14,7 +14,7 @@ export function QueryParam(name: string, options?: ParamOptions): Function {
1414
index: index,
1515
name: name,
1616
parse: options ? options.parse : false,
17-
required: options ? options.required : false,
17+
required: options ? options.required : undefined,
1818
classTransform: options ? options.transform : undefined,
1919
explicitType: options ? options.type : undefined,
2020
validate: options ? options.validate : undefined

src/decorator/Session.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { getMetadataArgsStorage } from "../index";
21
import { ParamOptions } from "../decorator-options/ParamOptions";
3-
2+
import { getMetadataArgsStorage } from "../index";
43

54
/**
65
* Injects a Session object to the controller action parameter.
@@ -31,7 +30,7 @@ export function Session(optionsOrObjectName?: ParamOptions|string, paramOptions?
3130
index: index,
3231
name: propertyName,
3332
parse: false, // it makes no sense for Session object to be parsed as json
34-
required: options.required !== undefined ? options.required : true,
33+
required: options.required,
3534
classTransform: options.transform,
3635
validate: options.validate !== undefined ? options.validate : false,
3736
});

src/decorator/UploadedFile.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {getMetadataArgsStorage} from "../index";
21
import {UploadOptions} from "../decorator-options/UploadOptions";
2+
import {getMetadataArgsStorage} from "../index";
33

44
/**
55
* Injects an uploaded file object to the controller action parameter.
@@ -14,7 +14,7 @@ export function UploadedFile(name: string, options?: UploadOptions): Function {
1414
index: index,
1515
name: name,
1616
parse: false,
17-
required: options ? options.required : false,
17+
required: options ? options.required : undefined,
1818
extraOptions: options ? options.options : undefined
1919
});
2020
};

0 commit comments

Comments
 (0)