mongo-ts-struct
Version:
Mongoose wrapper for Typescript supports
42 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = require("mongoose");
const helpers_1 = require("../../../../helpers");
const to_schema_1 = require("../../../to-schema");
const create_property_decorator_1 = require("../create-property-decorator");
/**
* @description
* using the standard syntax:
* { type: [{ type: <TYPE>, default: [] }] }
* where <TYPE> is the one of Schema.Types.(String | Number | Boolean | Mixed | TypedSchemaClass)
* @param type
*/
function ArrayOf(type, definition = {}) {
return create_property_decorator_1.createPropertyDecorator('ArrayOf', (targetPrototype, propertyName) => {
return {
type: [{ type: toMatchTypes(type) }],
definition
};
});
}
exports.ArrayOf = ArrayOf;
const toMatchTypes = (type) => {
switch (type) {
case 'string':
return mongoose_1.Schema.Types.String;
case 'number':
return mongoose_1.Schema.Types.Number;
case 'boolean':
return mongoose_1.Schema.Types.Boolean;
case 'any':
return mongoose_1.Schema.Types.Mixed;
default:
if (helpers_1.isTypedSchemaClass(type)) {
return to_schema_1.toSchema(type);
}
else {
return mongoose_1.Schema.Types.Mixed;
}
}
};
//# sourceMappingURL=array-of.js.map