moringa
Version:
Kamboja helper for MongooseJS
49 lines (48 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var kamboja_foundation_1 = require("kamboja-foundation");
var Mongoose = require("mongoose");
var schema_generator_1 = require("./schema-generator");
var H = require("./helper");
var option_builder_1 = require("./option-builder");
var type_converter_1 = require("./type-converter");
var MongooseHelper = (function () {
function MongooseHelper(pathResolver, classes) {
this.pathResolver = pathResolver;
this.schemas = {};
this.init(classes);
}
MongooseHelper.getInstance = function () {
if (!MongooseHelper.instance) {
var facade = kamboja_foundation_1.Kamboja.getFacade();
if (!facade)
throw new Error("Instance of Kamboja not found, do setup after Kamboja instantiation");
MongooseHelper.instance = new MongooseHelper(facade.pathResolver, facade.metaDataStorage.getClasses("Model"));
}
return MongooseHelper.instance;
};
MongooseHelper.prototype.createModel = function (name) {
return Mongoose.model(name);
};
MongooseHelper.prototype.init = function (classes) {
var _this = this;
var converter = new type_converter_1.TypeConverter(this.pathResolver, classes);
var generator = new schema_generator_1.SchemaGenerator(this.pathResolver, converter);
var optionBuilder = new option_builder_1.OptionBuilder();
classes.forEach(function (x) {
var schema = generator.generate(x);
var option = optionBuilder.getOption(x);
var name = H.getName(x.name);
_this.schemas[name] = new Mongoose.Schema(schema, option);
if (!Mongoose.modelNames().some(function (x) { return x == name; }))
Mongoose.model(name, _this.schemas[name]);
});
};
return MongooseHelper;
}());
exports.MongooseHelper = MongooseHelper;
function model(name) {
return MongooseHelper.getInstance()
.createModel(name);
}
exports.model = model;