@defikitdotnet/education-module-ai
Version:
AI Education Module using Agent Framework
76 lines (75 loc) • 3.44 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerController = registerController;
exports.registerControllers = registerControllers;
var express_1 = require("express");
var controller_1 = require("../decorators/controller");
/**
* Register a decorated controller with Express
* @param app Express application
* @param controller Controller instance
*/
function registerController(app, controller) {
// Get controller class
var controllerClass = controller.constructor;
// Get base path from Controller decorator
var basePath = Reflect.getMetadata(controller_1.CONTROLLER_META_KEY, controllerClass) || "";
// Create router
var router = (0, express_1.Router)();
// Get routes from Route decorator
var routes = Reflect.getMetadata(controller_1.ROUTES_META_KEY, controllerClass) || {};
// Get middleware from Use decorator
var middlewareMap = Reflect.getMetadata(controller_1.MIDDLEWARE_META_KEY, controllerClass) || {};
// Register each route
for (var _i = 0, _a = Object.entries(routes); _i < _a.length; _i++) {
var _b = _a[_i], methodName = _b[0], routeInfo = _b[1];
var _c = routeInfo, path = _c.path, method = _c.method;
// Get handler method from controller
var handler = controller[methodName].bind(controller);
// Get middleware for this route
var middleware = (middlewareMap[methodName] || []);
console.log("Registering route: [".concat(method, "] ").concat(basePath).concat(path, " -> ").concat(controllerClass.name, ".").concat(methodName));
// Add route to router based on HTTP method
switch (method) {
case "GET":
router.get.apply(router, __spreadArray(__spreadArray([path], middleware, false), [handler], false));
break;
case "POST":
router.post.apply(router, __spreadArray(__spreadArray([path], middleware, false), [handler], false));
break;
case "PUT":
router.put.apply(router, __spreadArray(__spreadArray([path], middleware, false), [handler], false));
break;
case "DELETE":
router.delete.apply(router, __spreadArray(__spreadArray([path], middleware, false), [handler], false));
break;
case "PATCH":
router.patch.apply(router, __spreadArray(__spreadArray([path], middleware, false), [handler], false));
break;
default:
console.warn("Unknown HTTP method: ".concat(method));
}
}
// Mount router to app
app.use(basePath, router);
}
/**
* Register multiple decorated controllers with Express
* @param app Express application
* @param controllers Array of controller instances
*/
function registerControllers(app, controllers) {
for (var _i = 0, controllers_1 = controllers; _i < controllers_1.length; _i++) {
var controller = controllers_1[_i];
registerController(app, controller);
}
}