crudtacular

0.2.1 • Public • Published

About

Crudtacular is a Hapi plugin that automatically bridges all the Model/Collection Bookshelf logic that a developer usually has to write in custom handlers.

With Crudtacular, you define crudtacular as the handler itself in your route definitions and simple CRUD routes are ready to go without additional setup.

NPM Installation

npm install --save crudtacular

Hapi Plugin Integration

When defining your Hapi plugins, require the following file and add it to the array of plugins that Hapi should use.

server.register({
  register : require('crudtacular'),
}, function(err) {
  if (err) throw err;
});

Examples

From any of your Hapi routes, you can define the following handler

const handler = {
  crudtacular : {
    pathPrefix : '/api',
    model : User.Model,
    collection : User.Collection,
  },
};

From there, in your individual route definitions, use the new handler. You can include pre functions, if desired, to supplement query parameters or check that the user has the correct permissions to actually call the function.

server.route({
  path : `/api/users`,
  method : 'GET',
  handler : handler,
  config : {
    description : 'Fetch all users',
  },
});

server.route({
  path : `/api/users/{userId}`,
  method : 'GET',
  handler : handler,
  config : {
    description : 'Fetch user',
  },
});

server.route({
  path : `/api/users`,
  method : 'POST',
  handler : handler,
  config : {
    description : 'Add new user',
  },
});

server.route({
  path : `/api/users/{userId}`,
  method : 'UPDATE',
  handler : handler,
  config : {
    pre : [
      canUpdateUser,
    ],
    description : 'Update user if an admin or the user is himself',
  },
});

server.route({
  path : `/api/users/{userId}`,
  method : 'DELETE',
  handler : handler,
  config : {
    pre : [
      canDeleteUser,
    ],
    description : 'Delete user if an admin or the user is himself',
  },
});

Readme

Keywords

Package Sidebar

Install

npm i crudtacular

Weekly Downloads

3

Version

0.2.1

License

MIT

Last publish

Collaborators

  • isaiahdw
  • jwdotjs
  • jbrumwell
  • bjy