0.1.5 • Published 6 years ago

subtroller v0.1.5

Weekly downloads
1
License
GPL-3.0
Repository
gitlab
Last release
6 years ago

Subtroller

A framework for making semantic MVC controllers. Using Subtroller, your routing file will look like:

router.route("/bees").get(beeCtrl.public.get.many);

router.route("/bees/:beeID").get(beeCtrl.private.get.bee);

Install

$ npm i --save subtroller

Basic Usage | (Examples in the /examples/ folder)

Using subtroller is easy, the most simple way to use it is by creating a number of subtrollers and adding them to a single controller:

// mycontroller.js //
const { Subtroller, Controller, Methods } = require("subtroller");

// Make a subtroller for getting many resources
const getMany = new Subtroller("get", "many", () => {
  // Do some stuff with whatever framework you're using
  console.log("GET MANY");
});

// Make a subtroller for adding 1 resource
const postOne = new Subtroller(Methods.POST, "one", () => {
  console.log("POST ONE");
});

// Add the subtrollers to a controller
const ctrlr = new Controller().add(getMany, postOne);

// Export the controller
module.exports = ctrlr;

Now that we've built the Controller, we can get the handler functions easily:

const ctrlr = require("./mycontroller.js");

ctrlr.post.one();
// $ POST ONE

ctrlr.get.many();
// $ GET MANY

If you don't want to use the new Subtroller(...) syntax, you can chain Controller.make(...) calls instead:

const ctrlr = new Controller()
                .make("get", "many", () => {...})
                .make("post" "one", () => {...})

Using ControllerGroup

Sometimes it makes sense to group private and public route controllers for the same endpoint togther. Subtroller makes it simple by giving another layer on top using the ControllerGroup class:

const { ControllerGroup, Controller } = require("subtroller");

// Make a public controller and give it a subtroller
const publicCtrlr = new Controller().make("get", "one", () => {...})

// Make a private controller
const privateCtrlr = new Controller().make("delete", "one" , () => {...})

// Add both to a Controller Group
const group = new ControllerGroup(publicCtrlr, privateCtrlr)

Now we can make sure we are using secured controllers where we need to:

group.public.get.one();
group.private.delete.one();
0.1.5

6 years ago

0.1.4

6 years ago

0.1.2

6 years ago

0.1.3

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago