1.1.0 • Published 2 years ago

router-ai v1.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Install npm package

npm i router-ai

Start with

const Router = require("router-ai");

Initialize the router

let router = new Router({
  api: "web",
  dir: "build",
  extra: true
});

Add routes to the router

router.addRoute({
  name: "Name-of-the-route",
  schema: [Mongoose Schema],
  routes: [RouteObj]
});

router.addRoute({
  name: "second-route",
  schema: [second-route - Mongoose Schema],
  routes: [RouteObj]
});

Finally Stop the router

router.stop();

RouteObj Description:

{
  method: "Method of the route",
  route: "route name",
  model: "get", // select one ["get", "add", "update", "delete"] model of database
  dataName: "name of the response",
  code: 200, // Status code
  body: {
    valid: `{
      limit: Joi.number().required(),
      skip: Joi.number().optional()
    }`, // Validating the request with Joi validator Object
    have: `{ limit, skip }`, // what's in the request body or query
    todo: `{
      limit,
      skip,
      project: {
        _id: 0,
        __v: 0
      }
    }`, // what to do with the request
  },
}

Example :

const Router = require("router-ai");

let router = new Router({
  api: "web",
  dir: "build",
  extra: true
});

router.addRoute({
  name: "live-score",
  schema: [
    `{
    active: {type: "boolean", require: true}
  }`,
  ],
  routes: [
    {
      method: "get",
      route: "list",
      model: "get",
      dataName: "scores",
      code: 200,
      body: {
        have: `{
          limit,
          skip
        }`,
        todo: `{
          limit,
          skip,
          project: {
            _id: 0,
            __v: 0
          }
        }`,
      },
    },
    {
      method: "post",
      route: "add",
      model: "add",
      middlewares: ["checkToken"],
      dataName: "score",
      code: 201,
      body: {
        valid: `{
          active: Joi.boolean().required()
        }`,
      },
    },
    {
      method: "post",
      route: "update",
      model: "update",
      middlewares: ["checkToken"],
      dataName: "score",
      code: 200,
      body: {
        valid: `{
          id: Joi.string().length(24).required(),
          active: Joi.boolean().optional()
        }`,
        have: `{
          id,
          active
        }`,
        todo: `{
          query: {
            _id: mongoose.objectId(id)
          },
          update : {
            set: {
              active
            }
          }
        }`,
      },
    },
    {
      method: "post",
      route: "delete",
      model: "delete",
      middlewares: ["checkToken"],
      dataName: "score",
      code: 214,
      body: {
        have: `{
          id
        }`,
        todo: "id",
      },
    },
  ],
});

router.addRoute({
  name: "poll",
  schema: [
    `{
    active: {type: "boolean", require: true}
  }`,
  ],
  routes: [
    {
      method: "get",
      route: "list",
      model: "get",
      dataName: "scores",
      code: 200,
      body: {
        have: `{
          limit,
          skip
        }`,
        todo: `{
          limit,
          skip,
          project: {
            _id: 0,
            __v: 0
          }
        }`,
      },
    },
  ],
});

router.stop();

Additionally, Postman collection you can find in the routes folder named as "index.test.json"

1.1.0

2 years ago

1.0.2

2 years ago

1.0.0

2 years ago