# router-ai

> route, validator, controller, service and model creator

Latest version **1.1.0** (published 2022-11-06) · ISC license · 0 weekly downloads

## Install

```sh
npm install router-ai
pnpm add router-ai
yarn add router-ai
bun add router-ai
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2022-11-06 |
| First published | 2022-11-06 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 25.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | @nti-Coder |
| Maintainers | prolearner |

## Links

- npm: https://www.npmjs.com/package/router-ai
- npm.io page: https://npm.io/package/router-ai

## Dependencies (1)

- [prettier](https://npm.io/package/prettier.md) ^2.7.1

## Recent versions

- 1.1.0 (latest) — 2022-11-06
- 1.0.2 — 2022-11-06
- 1.0.0 — 2022-11-06

## README

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"

---
_Source: https://npm.io/package/router-ai · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
