hapi-path-generator
v0.0.22
Published
A route generator for Hapi
Downloads
10
Readme
Hapi Path Generator
How it works
The project generates routes and the crud operations based on sequelize models.
The routes generated are of two types
- Table
- Examples:
/users
,/users
,/users/1/addresses?city=London
- Valid Methods
- GET Returns an array of table rows based on the generated query*
- POST Creates a new entry based on the payload
- DELETE Deletes an entry based generated query*
- Examples:
- Row
- Examples:
/users/1
,/users/uniqueId
,/users/1/addresses/232
- Valid Methods
- GET Returns the row matching the generated query*
- PUT Updates the row using the payload provided matching the generated query*
- DELETE Deletes the row that matches the generated query*
- Examples:
Querying
You can filter using query parameters when doing get requests:
/users?name=Istar&age=25
Or using sequelize scopes:
/users?sequelizeScopeName
Setting it up
const Hapi = require('hapi');
const Sequelize = require('sequelize');
const hapiSeq = require('hapi-sequelize');
const hapiPath =require('hapi-path-generator');
const config = require('config');
const sequelize = new Sequelize(
{
database: config.get('db.database'),
username: config.get('db.username'),
password: config.get('db.password'),
port: config.get('db.port'),
host: config.get('db.host'),
dialect: config.get('db.dialect'),
}
);
const server = new Hapi.Server();
server.connection({ port: 3000 });
server.register(
{
register: hapiSeq,
options: {
name: config.get('db.database'),
sequelize: sequelize,
sync: true,
models: 'src/models/**/*.js'
}
},
(err) => {
if(err) {
throw err;
}
server.register(
{
register: hapiPath,
options: {
sequelize: sequelize // Sequelize should be initialized with the models here
}
},
(err) => {
if(err) {
throw err;
}
server.start(function (err) {
if(err) {
throw err;
}
console.log('server running');
});
});
});
Dependencies
The project assumes that you will be using hapi with sequelize.
"sequelize": "3.x"
Contributing.
Run docker-compose up
.
Docker & Docker compose are required.