moringa
Version:
Kamboja helper for MongooseJS
43 lines (42 loc) • 1.82 kB
JavaScript
;
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;