router-ai
v1.1.0
Published
route, validator, controller, service and model creator
Downloads
5
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"