anchundan
Version:
39 lines (36 loc) • 1.42 kB
JavaScript
const path= require('path');
const fs = require('fs');
const publiccom = require('anchundan/src/core/publiccom');
const FrameworkType = require('anchundan/src/core/baseStruct/FrameworkType');
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
const getController = ( app )=>{
let controllerlist = publiccom.getTarget('types')[FrameworkType.CONTROLLER];
let result = {};
controllerlist.forEach( controller => {
const {
name,
typePath,
content
} = controller;
if(!content){
const operateClass = require(typePath);
const controllerInstance = new operateClass(app);
let propers = Object.getOwnPropertyNames(Object.getPrototypeOf(controllerInstance));
propers.forEach( key => {
if(controllerInstance[key] instanceof AsyncFunction){
let fun = controllerInstance[key];
controllerInstance[key] = async (context,...params)=>{
controllerInstance.context = context;
await fun.apply(controllerInstance,[context,...params]);
delete controllerInstance.context;
};
}
});
result[name] = controllerInstance;
}
})
return result;
};
module.exports = {
getController
};