node-rigorous
Version:
Rigorous Framework
70 lines (54 loc) • 2.06 kB
JavaScript
;
var mongoose = require('mongoose');
var createAttributesSchema = require('./create_schema_attributes_and_virtuals');
var setPrimaryKey = require('./set_primary_key');
var setObjectCrud = require('./set_crud_function');
var setExtraFunction = require('./set_extra_function');
var createSchema = require('./create_schema');
var setVirtuals = require('./set_virtual');
var setFilters = require('./set_filters');
var setHooks = require('./set_hooks');
var rigorousConfig = require('../../config');
module.exports = function (attributeModelFolderPath, modelName, beforeCreateTransformation, extraFunctionTab) {
var paginateMaxResultPerPage = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : rigorousConfig.PAGINATION_DEFAULT_MAX_RESULT_PER_PAGE;
var _createAttributesSche = createAttributesSchema(attributeModelFolderPath),
attributesSchema = _createAttributesSche.attributesSchema,
virtuals = _createAttributesSche.virtuals;
var modelSettings = {
name: modelName,
attributesSchema: attributesSchema,
virtuals: virtuals,
paginate: {
result: {
max: paginateMaxResultPerPage
}
},
transform: {
fields: {
before: {
create: beforeCreateTransformation
}
}
},
extra: {
functions: extraFunctionTab
}
/* hooks: {
pre: {
remove: null,
},
post: {
findOrfindOne: null,
anySave: null,
},
}, */
};
var schema = createSchema(modelName, modelSettings.attributesSchema); // Clé unique = combinaison de 2 champs
setPrimaryKey(schema, modelName, modelSettings.attributesSchema);
setVirtuals(schema, modelSettings.virtuals);
setObjectCrud(schema, modelSettings);
setFilters(schema, modelSettings.attributesSchema);
setExtraFunction(schema, modelSettings.extra.functions); // setHooks(schema, modelSettings.hooks);
var model = mongoose.model(modelName, schema, "".concat(modelName.toLowerCase(), "s"));
return model;
};