Skip to content

Latest commit

 

History

History
186 lines (137 loc) · 4.63 KB

README.md

File metadata and controls

186 lines (137 loc) · 4.63 KB

Glorious Crud

A bare minimum and extensible crud generator.

CircleCI codecov

Installation

npm install @glorious/crud --save

Usage

Basic

The purpose of this lib is to remove all the effort involved in creating a default crud as well as keeping everything under your control through its options.

const express = require('express');
const GCrud = require('@glorious/crud');

const app = express();
const gCrud = new GCrud('databaseUrl', 'databaseName', app);

// The line below will make the following endpoints available:
// GET    /beers
// GET    /beers/:id
// POST   /beers
// PUT    /beers/:id
// DELETE /beers/:id
const beersResource = gCrud.build('beers');

// From here, you can add any other custom endpoint you need.
beersResource.get('/beers/:id/awards', (req, res) => {
  // Your specific needs go here.
});

app.listen(9000, () => {
  console.log(`Running on port 9000...`);
});

Options

Using options, you can override any method by doing as follows:

const options = {
  get: (req, res) => {
    // This implementation will override get method.
    // The same can be done for any other method:
    // post, put, delete.
  }
}

const beersResource = gCrud.build('beers', options);

You can also set listeners to be called on success or on error of some method:

const options = {
  // Executes after every successful get request
  onGetSuccess: (req, res, response) => {
    // response is an object containing "status" (200) and "body".
  },
  // Executes after every failed get request
  onGetError: (req, res, err) => {
    // err is an object containing "status" (4xx or 5xx) and "body".
  },
  // Executes after every successful post request
  onPostSuccess: (req, res, response) => {
    // response is an object containing "status" (201) and "body".
  },
  // Executes after every failed post request
  onPostError: (req, res, err) => {
    // err is an object containing "status" (4xx or 5xx) and "body".
  },
  // Executes after every successful put request
  onPutSuccess: (req, res, response) => {
    // response is an object containing "status" (204).
  },
  // Executes after every failed put request
  onPutError: (req, res, err) => {
    // err is an object containing "status" (4xx or 5xx) and "body".
  },
  // Executes after every successful delete request
  onDeleteSuccess: (req, res, response) => {
    // response is an object containing "status" (204).
  }
  // Executes after every failed delete request
  onDeleteError: (req, res, err) => {
    // err is an object containing "status" (4xx or 5xx) and "body".
  }
}

const beersResource = gCrud.build('beers', options);

Built-in Query Params

When querying resources, you can use some built-in query params:

$sortBy

Sort some collection by one of its attributes:

curl http://localhost:9000/beers?$sortBy=name

$order

Order a sorted request by asc or desc:

curl http://localhost:9000/beers?$sortBy=name&$order=desc

$limit

Limit the number of results:

curl http://localhost:9000/beers?$limit=1

Also, you can use any resource attribute name as a filter:

curl http://localhost:9000/beers?name=Opa%20Bier

Contributing

  1. Install Node. Download the "Recommend for Most Users" version.

  2. Clone the repo:

git clone [email protected]:glorious-codes/glorious-crud.git
  1. Go to the project directory
cd glorious-crud
  1. Install the project dependencies
npm install
  1. run:
node src/app.js
  1. The API will be running on http://localhost:9000.

  2. Make some request to see the API in action:

curl http://localhost:9000/beers \
  -H 'content-type: application/json' \
  -d '{ "name":"Opa Bier" }'

NOTE Check out below how to configure MongoDB on your machine before making any request to the API.

Database

  1. Install MongoDB following its website instructions.

  2. Create a database called gcrud.

  3. Create a collection called beers.

  4. Start mongo on the default port(27017): Type mongod on your terminal.

Tools

  1. Postman is an awesome tool that makes API development a breeze.

  2. MongoDB Compass is the prettiest MongoDB UI client I have ever seen.