Files
core_ng/server/api/generator.ts
T
2023-08-06 14:27:30 +00:00

22 lines
750 B
TypeScript

import { Router } from 'express';
import type { AnyAPIExecuter, APINamespace } from './defs.js';
export function buildAPISystem<N extends APINamespace, Q extends AnyAPIExecuter>(api: N | Q): Router {
const router = Router();
for (const [key, value] of Object.entries(api)) {
if (typeof value === 'function') {
const executer = new value() as Q;
if (!executer.reqType) {
throw new Error('APIExecuter.reqType is not defined');
}
router[executer.reqType](key, async (req, res) => {
await executer.run(req, res);
});
continue;
} else {
router.use(key, buildAPISystem(value));
}
}
return router;
}