UNPKG

koa-springboot

Version:
147 lines (146 loc) 4.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const routerManager_1 = require("./routerManager"); const application_1 = require("./application"); const constants_1 = require("./constants"); function ControllerScan(...paths) { return function (target, propertyKey) { application_1.default.initParams.controllerPath = paths; return target; }; } exports.ControllerScan = ControllerScan; function ModelScan(...paths) { return function (target, propertyKey) { application_1.default.initParams.modelPath = paths; return target; }; } exports.ModelScan = ModelScan; function KoaApplication(constructor) { return application_1.default; } exports.KoaApplication = KoaApplication; function Controller(constructor) { return constructor; } exports.Controller = Controller; function doRequestMapping(target, action, value, method) { let controller = target; if (action) { controller = target.constructor; if (value) { const config = { pattern: value, action, }; if (method) { config.method = method; } routerManager_1.default.setRouteConfig(controller, config); } } else { routerManager_1.default.setControllerConfig(controller, { baseUrl: value }); } return controller; } function RequestMapping(value, method, rMethod) { if (typeof value !== 'function' && typeof value !== 'object') { return function (target, action) { return doRequestMapping(target, action, value, method); }; } const target = value; const action = method; return doRequestMapping(target, action, '/', rMethod); } exports.RequestMapping = RequestMapping; function mappingWrapper(value = '/', method, rMethod) { if (typeof value !== 'object') { return RequestMapping(value, rMethod); } else { return RequestMapping(value, method, rMethod); } } function GetMapping(value = '/', method) { return mappingWrapper(value, method, constants_1.RequestMethod.GET); } exports.GetMapping = GetMapping; function PostMapping(value = '/', method) { return mappingWrapper(value, method, constants_1.RequestMethod.POST); } exports.PostMapping = PostMapping; function PutMapping(value = '/', method) { return mappingWrapper(value, method, constants_1.RequestMethod.PUT); } exports.PutMapping = PutMapping; function DeleteMapping(value = '/', method) { return mappingWrapper(value, method, constants_1.RequestMethod.DELETE); } exports.DeleteMapping = DeleteMapping; function PatchMapping(value = '/', method) { return mappingWrapper(value, method, constants_1.RequestMethod.PATCH); } exports.PatchMapping = PatchMapping; function paramDecorator(type, value = '', required = false, defaultValue) { return function (target, propertyKey, parameterIndex) { routerManager_1.default.setParamVariable(target.constructor, propertyKey.toString(), { name: value, index: parameterIndex, type, required, defaultValue }); }; } function PathVariable(name, required = false, defaultValue) { return paramDecorator('PathVariable', name, required, defaultValue); } exports.PathVariable = PathVariable; function RequestParam(name, required = false, defaultValue) { return paramDecorator('RequestParam', name, required, defaultValue); } exports.RequestParam = RequestParam; function RequestBody(target, propertyKey, parameterIndex) { routerManager_1.default.setParamVariable(target.constructor, propertyKey.toString(), { name: '', index: parameterIndex, type: 'RequestBody', required: false, }); } exports.RequestBody = RequestBody; function ResponseBody(target, action) { let controller = target; if (action) { controller = target.constructor; const config = { action, responseType: 'json' }; routerManager_1.default.setRouteConfig(controller, config); } else { routerManager_1.default.setControllerConfig(controller, { responseType: 'json' }); return controller; } } exports.ResponseBody = ResponseBody; function ResponseStatus(responseStatus) { return function (target, action) { const config = { action, responseStatus, }; routerManager_1.default.setRouteConfig(target.constructor, config); }; } exports.ResponseStatus = ResponseStatus; function Model(name) { return function (target, propertyKey) { routerManager_1.default.setInjectModel(target.constructor, propertyKey, name); }; } exports.Model = Model;