UNPKG

@ferjssilva/fast-crud-api

Version:

A complete and fast crud API generator

35 lines (28 loc) 1.28 kB
const fp = require('fastify-plugin'); const { setupErrorHandler } = require('./middleware/error-handler'); const { setupCrudRoutes } = require('./routes/crud'); const { setupNestedRoutes } = require('./routes/nested'); /** * Fast CRUD API plugin for Fastify and MongoDB * @param {Object} fastify - Fastify instance * @param {Object} options - Plugin options * @param {Array} options.models - Array of Mongoose models * @param {String} options.prefix - API prefix * @param {Object} options.methods - Allowed methods per model * @param {Array} options.userScoped - Array of user-scoped resource names */ async function createRoutes(fastify, options) { const { models, prefix = '/api', methods = {}, userScoped = [] } = options; // Setup error handler setupErrorHandler(fastify); // Setup routes for each model models.forEach(model => { const modelName = model.collection.name; const baseRoute = `${prefix}/${model.collection.name}`; // Setup basic CRUD routes and get reference fields const { referenceFields } = setupCrudRoutes(fastify, model, baseRoute, { methods, userScoped }); // Setup nested routes for references setupNestedRoutes(fastify, model, prefix, referenceFields, { methods }); }); } module.exports = fp(createRoutes);