0.0.10 • Published 3 years ago

coal-shovel v0.0.10

Weekly downloads
10
License
MIT
Repository
-
Last release
3 years ago

Coal Shovel

Provides a simple CRUD endpoint set, based on Django ViewSets, for use with express and sequelize.

Contents

Install

npm i coal-shovel

Usage

const CoalCRUD = require("coal-shovel");

let sampleCRUD = new CoalCRUD();
sampleCRUD.registerCRUD(expressInstance, "route-name", SequelizeModel);

Example Code

const CoalCRUD = require("coal-shovel");
const express = require("express");
const Sequelize = require("sequelize");

const db = new Sequelize("sqlite::memory:");

const app = express();

const Product = db.define("product", {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true,
  },
  name: {
    type: Sequelize.STRING,
    allowNull: false,
  },
});

async function syncDB() {
  try {
    const result = await db.sync();
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

syncDB();
let product = new CoalCRUD();
product.registerCRUD(app, "product", Product);

const port = 3000;
app.listen(port, () => {
  console.log(`Listening at http://localhost:${port}`);
});

Custom Behavior

You can extend from the CoalCRUD class and override the methods you want to create custom beahavior to a given endpoint.

class myCRUD extends CoalCRUD {
  getAll(app, route, _) {
    app.get("/" + route, async (_, res) => {
      res.status(403).send();
    });
  }
}

In this example, we override the getAll method to send a 403 FORBIDDEN status code to the user, instead of serving all data.

Endpoints

Returns all items:

GET http://localhost:3000/route-name

Returns single item by primary key:

GET http://localhost:3000/route-name/1

Create item based on model fields:

POST http://localhost:3000/route-name

Update item based on model fields:

POST http://localhost:3000/route-name

Delete item by primary key:

DELETE http://localhost:3000/route-name/1
0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.4

3 years ago

0.0.1

3 years ago