import express = require('express'); import mongoose = require('mongoose'); import { EMSession } from './emSession'; import { EMEntityController } from './emEntityController'; import { EMEntity, EntityDocument } from './emEntity'; class IExpositionDetail { entityName : string; controller: any; // Issues with set a type for multiple generic controllers } class EMRouterManager { //#regrion Properties (Fields) private _session : EMSession; private _appInstance : express.Application; private _routers : Array; //#endregion //#regrion Methods constructor (session : EMSession, appInstance : express.Application) { this._session = session; this._appInstance = appInstance; this._routers = new Array(); } exposeEntity ( entityName : string) : void; exposeEntity( entityName: string, controller : EMEntityController) : void; exposeEntity ( entityName : string, controller? : EMEntityController ) : void { let entityController : EMEntityController; if (controller == null) entityController = new EMEntityController( entityName, this._session ); else entityController = controller; this._routers.push( { entityName : entityName, controller : entityController } ); this._appInstance.use('/api', entityController.router); } //#endregion //#regrion Accessors (Properties) get session () : EMSession { return this._session; } get appInstance () : express.Application { return this._appInstance; } //#endregion } export { EMRouterManager }