UNPKG

node-rigorous

Version:
70 lines (54 loc) 2.06 kB
"use strict"; 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; };