UNPKG

nodejs-rigorous

Version:
72 lines (56 loc) 2.36 kB
"use strict"; var mongoose = require('mongoose'); var createAttributesSchema = require('./create_schema_attributes_and_virtuals'); var createFilter = require('./create_filter'); 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 setHooks = require('./set_hooks'); var rigorousConfig = require('../../config'); module.exports = function (mongoose, attributeModelFolderPath, modelName, beforeCreateTransformation, extraFunctionTab) { var paginateMaxResultPerPage = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 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(mongoose, modelSettings.attributesSchema); // Clé unique = combinaison de 2 champs setPrimaryKey(schema, modelSettings.attributesSchema); setVirtuals(schema, modelSettings.virtuals); setObjectCrud(schema, modelSettings); setExtraFunction(schema, modelSettings.extra.functions); // setHooks(schema, modelSettings.hooks); var ObjectCollection = mongoose.model(modelName, schema); ObjectCollection.FILTER_PUBLIC = createFilter(modelSettings.attributesSchema, rigorousConfig.FILTER_ATTRIBUTE_LEVEL.PUBLIC); ObjectCollection.FILTER_OWNER = createFilter(modelSettings.attributesSchema, rigorousConfig.FILTER_ATTRIBUTE_LEVEL.OWNER); ObjectCollection.FILTER_SECRET = createFilter(modelSettings.attributesSchema, rigorousConfig.FILTER_ATTRIBUTE_LEVEL.SECRET); return ObjectCollection; };