UNPKG

moringa

Version:

Kamboja helper for MongooseJS

49 lines (48 loc) 2.05 kB
"use strict"; 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;