UNPKG

moringa

Version:

Kamboja helper for MongooseJS

43 lines (42 loc) 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var type_checker_1 = require("./type-checker"); var Mongoose = require("mongoose"); var kamboja_foundation_1 = require("kamboja-foundation"); var TypeConverter = (function () { function TypeConverter(pathResolver, classes) { this.pathResolver = pathResolver; this.classes = classes; } TypeConverter.prototype.convert = function (type, typeName) { var checker = new type_checker_1.TypeChecker(type, this.pathResolver); if (!checker.isValid()) throw new Error("Invalid type used in @type in [" + typeName + "]"); var conversion; if (checker.isQualifiedName()) { var qualifiedName_1 = new kamboja_foundation_1.Resolver.QualifiedName(type, this.pathResolver); var clazz = this.classes.filter(function (x) { return qualifiedName_1.equals(x.qualifiedClassName); })[0]; if (!clazz) throw new Error("Model [" + type + "] used in @type is not exists in [" + typeName + "]"); var isShortId = clazz.decorators && clazz.decorators.some(function (x) { return x.name == "shortid"; }); conversion = { type: isShortId ? String : Mongoose.Schema.Types.ObjectId, ref: checker.getName() }; } else if (checker.getName() == "string") conversion = String; else if (checker.getName() == "number") conversion = Number; else if (checker.getName() == "boolean") conversion = Boolean; else conversion = Date; if (checker.isArray()) return [conversion]; else return conversion; }; return TypeConverter; }()); exports.TypeConverter = TypeConverter;