UNPKG

node-rigorous

Version:
63 lines (52 loc) 2.07 kB
const mongoose = require('mongoose'); const createAttributesSchema = require('./create_schema_attributes_and_virtuals'); const setPrimaryKey = require('./set_primary_key'); const setObjectCrud = require('./set_crud_function'); const setExtraFunction = require('./set_extra_function'); const createSchema = require('./create_schema'); const setVirtuals = require('./set_virtual'); const setFilters = require('./set_filters'); const setHooks = require('./set_hooks'); const rigorousConfig = require('../../config'); module.exports = (attributeModelFolderPath, modelName, beforeCreateTransformation, extraFunctionTab, paginateMaxResultPerPage = rigorousConfig.PAGINATION_DEFAULT_MAX_RESULT_PER_PAGE) => { const { attributesSchema, virtuals } = createAttributesSchema(attributeModelFolderPath); const 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, }, }, */ }; const 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); const model = mongoose.model(modelName, schema, `${modelName.toLowerCase()}s`); return model; };