vulcain-corejs
Version:
Vulcain micro-service framework
54 lines (52 loc) • 1.43 kB
JavaScript
const Models = "models";
const Services = "services";
const Handlers = "handlers";
class Preloader {
constructor() {
this._preloads = {};
}
static get instance() {
if (!Preloader._instance) {
Preloader._instance = new Preloader();
}
return Preloader._instance;
}
registerModel(fn, callback) {
let key = fn.name;
this.register(Models, key, callback);
}
registerService(fn, callback) {
let key = fn.name;
this.register(Services, key, callback);
}
registerHandler(fn, callback) {
let key = fn.name;
this.register(Handlers, key, callback);
}
register(key, name, fn) {
let list = this._preloads[key];
if (!list) {
this._preloads[key] = list = [];
}
list.push({ name, callback: fn });
}
run(key, container, domain) {
let items = this._preloads[key];
if (!items)
return;
for (const item of items) {
item.callback(container, domain);
}
}
runPreloads(container, domain) {
if (this._preloads) {
this.run(Models, container, domain);
this.run(Services, container, domain);
this.run(Handlers, container, domain);
this._preloads = {};
}
}
}
exports.Preloader = Preloader;
//# sourceMappingURL=preloader.js.map
;