1.5.1 • Published 5 years ago

dynamic-route-generator v1.5.1

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

dynamic-route-generator

Dynamically generate REST endpoints for your application

How to use

If using Postgres as your database
import { Sequelize, STRING, ARRAY } from "sequelize";

const { RouteGenerator } = require('dynamic-route-generator');
const Sequelize = require('sequelize')
const { XAuth } = require('x-auth-plugin')

export class PostgresInstance {
  constructor(app) { }

  setup() {
    const sequelize: Sequelize = new Sequelize('testdb', 'admin', '1234', {
      host: 'localhost',
      dialect: 'postgres',
      pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000
      },
      logging: false,
      operatorsAliases: false
    });

    const GameModel = sequelize.define('gameschema', {
      name: {
        type: STRING,
        allowNull: false
      },
      players: {
        type: ARRAY(STRING),
        allowNull: false
      }
    })

    sequelize.sync().then(() => {
      const routes = [{
        uri: '/list/games',
        model: GameModel,
        methods: [{
          name: 'get'
        }, {
          name: 'post'
        }, {
          name: 'put'
        }, {
          name: 'delete'
        }]
      }]

      new RouteGenerator({
        routes: routes,
        database: 'postgres',
        app: this.app,
        plugins: {
          pre: [],
          post: []
        }
      })

      this.app.listen(8080)
    })
  }
}
If using Mongo as your database
import { Schema, connect, model } from "mongoose";

const { RouteGenerator } = require('dynamic-route-generator');

export class MongoInstance {
  constructor(app) { }

  setup() {
    const GameSchema = new Schema({
      name: {
        required: true,
        type: String
      },
      playersOnline: {
        required: true,
        type: Number
      }
    })

    connect('mongodb://localhost/test').then(() => {
      const routes = [{
        uri: '/list/games',
        model: model('GameSchema', GameSchema),
        methods: [{
          name: 'get'
        }, {
          name: 'post'
        }, {
          name: 'put'
        }, {
          name: 'delete'
        }]
      }]

      new RouteGenerator({
        routes: routes,
        database: 'mongo',
        app: this.app,
        plugins: {
          pre: [],
          post: []
        }
      })

      this.app.listen(8080)
    })
  }
}
index.js
import express from 'express';
import { PostgresInstance } from './postgres-setup';
import { MongoInstance } from './mongo-setup';

const app = express()
const databaseToUse = process.argv[2].substr(2)

if (databaseToUse === 'postgres') {
  new PostgresInstance(app).setup();
} else {
  new MongoInstance(app).setup();
}

API

Route Generator API

PropertyDefault ValueRequiredInformation
routesnoneTrueAn array of routes you wish to generate
databasemongoTrueThe kind of database you wish to use, currently supports Mongo and Postgres
appnoneTrueThe app instance you wish to assign routes to
baseUri/FalseThe base uri where the api will start from
pluginsnoneTruePlugins that can be run inside of the Dynamic Route Generator
plugins = {
  pre: [PluginName],
  post: [PluginName2, PluginName3]
}

Routes API

PropertyDefault ValueRequiredInformation
urinoneTrueThe uri for the route you are creating
modelnoneTrueThe data model that represents the object for this route
handlers[]FalseGlobal handlers you want to apply to all methods
methods'get'FalseIf you do not specify any methods it will default to creating a GET route; Methods you want to be avaiable for this route along with any handlers. An example of a handler could be that of an authentication check
methods = [{
  name: 'get',
  handlers: []
}]

- OR -

methods = ['get']

Develop custom plugins

If you would like to create your own custom plugins, take a look at api-docs example

API Definition

Methods

install - A static method that simply executes an event named 'Plugin Installed' and internally, will execute the given code in the 'apply' method

apply - A method that executes your plugins code. The apply method gives you access to the routes object as the first argument

1.5.1

5 years ago

1.5.0

5 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago