lynx-framework
Version:
lynx is a NodeJS framework for Web Development, based on decorators and the async/await support.
84 lines (79 loc) • 2.75 kB
text/typescript
import App from './app';
import Config from './config';
export default abstract class BaseModule {
abstract get controllers(): string;
abstract get middlewares(): string;
abstract get translation(): string;
abstract get views(): string;
abstract get public(): string;
abstract get entities(): string;
abstract get migrations(): string;
abstract get templating(): string;
public mount(config: Config) {
if (this.controllers) {
if (config.onlyModules) {
config.controllersFolders.push(this.controllers);
} else {
config.controllersFolders.unshift(this.controllers);
}
}
if (this.middlewares) {
if (config.onlyModules) {
config.middlewaresFolders.push(this.middlewares);
} else {
config.middlewaresFolders.unshift(this.middlewares);
}
}
if (this.translation) {
if (config.onlyModules) {
config.translationFolders.push(this.translation);
} else {
config.translationFolders.unshift(this.translation);
}
}
if (this.views) {
if (config.onlyModules) {
config.viewFolders.push(this.views);
} else {
config.viewFolders.unshift(this.views);
}
}
if (this.public) {
if (config.onlyModules) {
config.publicFolders.push(this.public);
} else {
config.publicFolders.unshift(this.public);
}
}
if (this.entities) {
if (config.onlyModules) {
config.db.entities.push(this.entities + '/*.entity.js');
} else {
config.db.entities.unshift(this.entities + '/*.entity.js');
}
}
if (this.migrations) {
if (config.onlyModules) {
config.migrationsFolders.push(this.migrations);
} else {
config.migrationsFolders.unshift(this.migrations);
}
}
if (this.templating) {
if (config.onlyModules) {
config.templatingFolders.push(this.templating);
} else {
config.templatingFolders.unshift(this.templating);
}
}
}
/**
* This method is called when the connection to the database is established.
*/
public onDatabaseConnected() {}
/**
* This method is called when the Lynx app is configured and ready to be executed.
*/
// @ts-ignore: 'app' is declared but its value is never read.
public async onAppReady(app: App): Promise<void> {}
}