@nestjsx/crud
Advanced tools
Comparing version 3.0.0 to 3.1.0
@@ -7,2 +7,3 @@ export declare const FEAUTURE_NAME_METADATA = "NESTJSX_FEAUTURE_NAME_METADATA"; | ||
export declare const PARSED_OPTIONS_METADATA = "NESTJSX_PARSED_OPTIONS_METADATA"; | ||
export declare const PARSED_BODY_METADATA = "NESTJSX_PARSED_BODY_METADATA"; | ||
export declare const CREATE_UPDATE: { | ||
@@ -9,0 +10,0 @@ groups: string[]; |
@@ -10,2 +10,3 @@ "use strict"; | ||
exports.PARSED_OPTIONS_METADATA = 'NESTJSX_PARSED_OPTIONS_METADATA'; | ||
exports.PARSED_BODY_METADATA = 'NESTJSX_PARSED_BODY_METADATA'; | ||
exports.CREATE_UPDATE = { | ||
@@ -12,0 +13,0 @@ groups: [crud_validate_enum_1.CrudValidate.CREATE, crud_validate_enum_1.CrudValidate.UPDATE], |
@@ -26,3 +26,3 @@ "use strict"; | ||
}; | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_QUERY_REQUEST_KEY, 0), helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_OPTIONS_METADATA, 1)), target, name); | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_QUERY_REQUEST_KEY, 0), helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_OPTIONS_METADATA, 1)), target, name); | ||
helpers_1.setParamTypes([dto_1.RestfulParamsDto, Object], prototype, name); | ||
@@ -45,3 +45,3 @@ helpers_1.setInterceptors([ | ||
}; | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_QUERY_REQUEST_KEY, 0), helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_OPTIONS_METADATA, 1)), target, name); | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_QUERY_REQUEST_KEY, 0), helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_OPTIONS_METADATA, 1)), target, name); | ||
helpers_1.setParamTypes([dto_1.RestfulParamsDto, Object], prototype, name); | ||
@@ -64,3 +64,3 @@ helpers_1.setInterceptors([ | ||
}; | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), | ||
@@ -96,3 +96,3 @@ ])), target, name); | ||
], BulkDto.prototype, "bulk", void 0); | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.CREATE), | ||
@@ -115,3 +115,3 @@ ])), target, name); | ||
}; | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0), helpers_1.createParamMetadata(route_paramtypes_enum_1.RouteParamtypes.BODY, 1, [ | ||
helpers_1.setValidationPipe(crudOptions, enums_1.CrudValidate.UPDATE), | ||
@@ -134,3 +134,3 @@ ])), target, name); | ||
}; | ||
helpers_1.setParams(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0)), target, name); | ||
helpers_1.setRouteArgs(Object.assign({}, helpers_1.createCustomRequestParamMetadata(constants_1.PARSED_PARAMS_REQUEST_KEY, 0)), target, name); | ||
helpers_1.setParamTypes([Array], prototype, name); | ||
@@ -194,3 +194,3 @@ helpers_1.setInterceptors([ | ||
const path = helpers_1.getControllerPath(target); | ||
helpers_1.paramsOptionsInit(crudOptions); | ||
helpers_1.setDefaultCrudOptions(crudOptions); | ||
const slug = helpers_1.getRoutesSlugName(crudOptions, path); | ||
@@ -222,2 +222,3 @@ Object.keys(baseRoutes).forEach((name) => { | ||
helpers_1.setSwaggerOperationMeta(baseSwaggerOperation, prototype[name]); | ||
helpers_1.overrideParsedBody(target, overrided, name); | ||
helpers_1.setRoute(route.path, route.method, prototype[name]); | ||
@@ -224,0 +225,0 @@ route.override = true; |
@@ -8,5 +8,6 @@ import { RequestMethod, ValidationPipe } from '@nestjs/common'; | ||
export declare function setParamTypes(args: any[], prototype: any, name: string): void; | ||
export declare function setParams(metadata: any, target: object, name: string): void; | ||
export declare function setRouteArgs(metadata: any, target: object, name: string): void; | ||
export declare function setInterceptors(interceptors: any[], func: Function): void; | ||
export declare function setAction(action: CrudActions, func: Function): void; | ||
export declare function setParsedBody(meta: any, func: Function): void; | ||
export declare function setSwaggerOkResponseMeta(meta: any, func: Function): void; | ||
@@ -22,5 +23,8 @@ export declare function setSwaggerOperationMeta(meta: any, func: Function): void; | ||
export declare function createCustomRequestParamMetadata(paramtype: string, index: number, pipes?: any[], data?: any): any; | ||
export declare function getOverrideMetadata(func: Function): string; | ||
export declare function getOverrideMetadata(func: Function): BaseRouteName; | ||
export declare function getInterceptors(func: Function): any[]; | ||
export declare function getAction(func: Function): CrudActions; | ||
export declare function getParsedBody(func: Function): any; | ||
export declare function getParamTypes(prototype: any, name: string): any; | ||
export declare function getRouteArgs(target: object, name: string): any; | ||
export declare function getControllerPath(target: any): string; | ||
@@ -32,5 +36,6 @@ export declare function getSwaggerParams(func: Function): any[]; | ||
export declare function enableRoute(name: BaseRouteName, crudOptions: CrudOptions): boolean; | ||
export declare function paramsOptionsInit(crudOptions: CrudOptions): void; | ||
export declare function setDefaultCrudOptions(crudOptions: CrudOptions): void; | ||
export declare function getRoutesSlugName(crudOptions: CrudOptions, path: string): string; | ||
export declare function getRouteInterceptors(routeOptions: any): any[]; | ||
export declare function cleanRoutesOptionsInterceptors(crudOptions: CrudOptions): void; | ||
export declare function overrideParsedBody(target: any, baseName: BaseRouteName, name: string): void; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const common_1 = require("@nestjs/common"); | ||
const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum"); | ||
const shared_utils_1 = require("@nestjs/common/utils/shared.utils"); | ||
@@ -17,6 +18,6 @@ const constants_1 = require("@nestjs/common/constants"); | ||
exports.setParamTypes = setParamTypes; | ||
function setParams(metadata, target, name) { | ||
function setRouteArgs(metadata, target, name) { | ||
Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); | ||
} | ||
exports.setParams = setParams; | ||
exports.setRouteArgs = setRouteArgs; | ||
function setInterceptors(interceptors, func) { | ||
@@ -30,2 +31,6 @@ Reflect.defineMetadata(constants_1.INTERCEPTORS_METADATA, interceptors, func); | ||
exports.setAction = setAction; | ||
function setParsedBody(meta, func) { | ||
Reflect.defineMetadata(constants_2.PARSED_BODY_METADATA, meta, func); | ||
} | ||
exports.setParsedBody = setParsedBody; | ||
function setSwaggerOkResponseMeta(meta, func) { | ||
@@ -225,2 +230,14 @@ if (utils_1.swagger) { | ||
exports.getAction = getAction; | ||
function getParsedBody(func) { | ||
return Reflect.getMetadata(constants_2.PARSED_BODY_METADATA, func); | ||
} | ||
exports.getParsedBody = getParsedBody; | ||
function getParamTypes(prototype, name) { | ||
return Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, prototype, name) || []; | ||
} | ||
exports.getParamTypes = getParamTypes; | ||
function getRouteArgs(target, name) { | ||
return Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target, name) || {}; | ||
} | ||
exports.getRouteArgs = getRouteArgs; | ||
function getControllerPath(target) { | ||
@@ -265,3 +282,3 @@ return Reflect.getMetadata(constants_1.PATH_METADATA, target); | ||
exports.enableRoute = enableRoute; | ||
function paramsOptionsInit(crudOptions) { | ||
function setDefaultCrudOptions(crudOptions) { | ||
const check = (obj) => shared_utils_1.isNil(obj) || !shared_utils_1.isObject(obj) || !Object.keys(obj).length; | ||
@@ -293,3 +310,3 @@ if (check(crudOptions.params)) { | ||
} | ||
exports.paramsOptionsInit = paramsOptionsInit; | ||
exports.setDefaultCrudOptions = setDefaultCrudOptions; | ||
function getRoutesSlugName(crudOptions, path) { | ||
@@ -314,2 +331,29 @@ if (!shared_utils_1.isNil(crudOptions.params.id)) { | ||
exports.cleanRoutesOptionsInterceptors = cleanRoutesOptionsInterceptors; | ||
function overrideParsedBody(target, baseName, name) { | ||
const allowed = ['createManyBase', 'createOneBase', 'updateOneBase']; | ||
const withBody = allowed.includes(baseName); | ||
const prototype = target.prototype; | ||
const parsedBody = getParsedBody(prototype[name]); | ||
if (withBody && parsedBody) { | ||
const baseKey = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:1`; | ||
const key = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:${parsedBody.index}`; | ||
const baseRouteArgs = getRouteArgs(target, baseName); | ||
const routeArgs = getRouteArgs(target, name); | ||
const baseBodyArgMeta = baseRouteArgs[baseKey]; | ||
setRouteArgs(Object.assign({}, routeArgs, { [key]: Object.assign({}, baseBodyArgMeta, { index: parsedBody.index }) }), target, name); | ||
if (baseName === 'createManyBase') { | ||
const paramTypes = getParamTypes(prototype, name); | ||
const metatype = paramTypes[parsedBody.index]; | ||
const types = [String, Boolean, Number, Array, Object]; | ||
const toCopy = types.some((t) => metatype === t) || shared_utils_1.isNil(metatype); | ||
if (toCopy) { | ||
const baseParamTypes = getParamTypes(prototype, baseName); | ||
const baseMetatype = baseParamTypes[1]; | ||
paramTypes.splice(parsedBody.index, 1, baseMetatype); | ||
setParamTypes(paramTypes, prototype, name); | ||
} | ||
} | ||
} | ||
} | ||
exports.overrideParsedBody = overrideParsedBody; | ||
//# sourceMappingURL=helpers.js.map |
@@ -6,1 +6,2 @@ export * from './feature-action.decorator'; | ||
export * from './parsed-options.decorator'; | ||
export * from './parsed-body.decorator'; |
@@ -11,2 +11,3 @@ "use strict"; | ||
__export(require("./parsed-options.decorator")); | ||
__export(require("./parsed-body.decorator")); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@nestjsx/crud", | ||
"version": "3.0.0", | ||
"version": "3.1.0", | ||
"description": "NestJs CRUD for RESTful APIs", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -817,3 +817,3 @@ <p align="center"> | ||
@ParsedParams() params: FilterParamParsed[], | ||
@Body() dto: T, | ||
@ParsedBody() dto: T, | ||
): Promise<T>; | ||
@@ -823,3 +823,3 @@ | ||
@ParsedParams() params: FilterParamParsed[], | ||
@Body() dto: EntitiesBulk<T>, | ||
@ParsedBody() dto: EntitiesBulk<T>, | ||
): Promise<T[]>; | ||
@@ -829,3 +829,3 @@ | ||
@ParsedParams() params: FilterParamParsed[] | ||
@Body() dto: T, | ||
@ParsedBody() dto: T, | ||
): Promise<T>; | ||
@@ -882,8 +882,37 @@ | ||
... | ||
@Override() | ||
createOne( | ||
@ParsedParams() params, | ||
@ParsedBody() body: Hero, | ||
) { | ||
return this.base.createOneBase(params, body); | ||
} | ||
@Override() | ||
createMany( | ||
@ParsedBody() body: EntitiesBulk<Hero>, // validation is working ^_^ | ||
@ParsedParams() params, | ||
) { | ||
return this.base.createManyBase(params, body); | ||
} | ||
@Override('updateOneBase') | ||
coolFunction() { | ||
@ParsedParams() params, | ||
@ParsedBody() body: Hero, | ||
} { | ||
return this.base.updateOneBase(params, body); | ||
} | ||
@Override() | ||
async deleteOne( | ||
@ParsedParams() params, | ||
) { | ||
return this.base.deleteOneBase(params); | ||
} | ||
} | ||
``` | ||
**_Notice:_** new custom route decorators were created to simplify process: `@ParsedQuery()`, `@ParsedParams`, and `@ParsedOptions()`. But you still can add your param decorators to any of the methods, e.g. `@Param()`, `@Session()`, etc. Or any of your own cutom route decorators. | ||
**_Notice:_** new custom route decorators were created to simplify process: `@ParsedQuery()`, `@ParsedParams`, `@ParsedBody()`, and`@ParsedOptions()`. But you still can add your param decorators to any of the methods, e.g. `@Param()`, `@Session()`, etc. Or any of your own cutom route decorators. | ||
@@ -890,0 +919,0 @@ ### Additional Decorators |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
184182
138
2153
1024