Initial commit
This commit is contained in:
24
api/infra/moduleLoader.ts
Normal file
24
api/infra/moduleLoader.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import type { Application } from 'express'
|
||||
import type { ServiceContainer } from './container.js'
|
||||
import type { ApiModule } from './types.js'
|
||||
import { ModuleManager } from './moduleManager.js'
|
||||
|
||||
export async function loadModules(
|
||||
app: Application,
|
||||
container: ServiceContainer,
|
||||
modules: ApiModule[]
|
||||
): Promise<ModuleManager> {
|
||||
const manager = new ModuleManager(container)
|
||||
|
||||
for (const module of modules) {
|
||||
await manager.register(module)
|
||||
}
|
||||
|
||||
for (const module of manager.getAllModules()) {
|
||||
await manager.activate(module.metadata.id)
|
||||
const router = await module.createRouter(container)
|
||||
app.use('/api' + module.metadata.basePath, router)
|
||||
}
|
||||
|
||||
return manager
|
||||
}
|
||||
Reference in New Issue
Block a user