qserver v0.1.8
Api Reference
Initialize app
Installation
npm install qserverSetup app
var qServer = require('qserver'),
App = qServer.App,
app = new App();Settings
.setDatabase
Like wrapper uses sequelize, so it uses Sequelize configuration. To set models, it get a function that recieves sequelize instance and data-types and return models.
app.setDatabase(
// Sequelize configuration
{
name : 'tablename',
username : 'username',
password : 'password',
settings : {
dialect : 'postgres', // Default: sqlite
port: 5432,
.. (other Sequelize settings)
}
},
// Models
function(sequelize,DataTypes){
var models = {};
models.User = sequelize.define('User', {
name: DataTypes.STRING
});
return models;
}
);.addModels
.addModels adds new models to database
app.addModels(
function(sequelize,DataTypes){
var models = {};
models.Task = sequelize.define('Task', {
title: DataTypes.STRING,
details: DataTypes.STRING
});
return models;
}
);.setViewEngine
.setViewEngine method sets view engine and views path, it recieves an object with attributes path, extension and engine.
'path' attribute sets the views path, extension is the file's to render extension and engine is the view engine.
app.setViewEngine({
path : __dirname+'/views',
extension : 'jade',
engine : require('jade').__express
});.setPublicDirectory
.setPublicDirectory method the public directory path
app.setPublicDirectory(__dirname + '/public');Router
.addRoute
.addRoute method works with dependency injection, it recieves a function with dependencies to resolve and returns the route configuration
app.addRoute(function(){ // Function recieves dependencies like $database
return {
method : 'POST', // Default: GET
path : '/new/path',
callback : function(request,response){
...
}
};
})Install apps
You can also compose other apps eith your main app
App installer
Tha app installer is the function that contains app to be installed, this function recieves app that will be composed (parent).
var subAppInstaller = function(parent){
// Sub-app
var subApp = new App(parent);
// Sub-app route
subApp.addRoute(function() {
...
});
};If app should be installed inside a costum path it also should be recived as a parameter before parent. Route paths inside sub-app will be after path sent by installer function.
var subAppInstallerWithPath = function(path,parent){
// Sub-app
var subApp = new App(path,parent);
// Sub-app route
subApp.addRoute(function() {
...
});
};.install
This is how we will install sub-apps
// Without using path
app.install(subAppInstaller);
// Using path
app.install('/sub-app',subAppInstallerWithPath);Sockets
Based on Socket.io.
.socket
Receives a function as a paramater, that function receives the io server instance
app.socket( function(io) {
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
});Dependencies
Wrapper works with dependency injection, here we list available dependencies
$database
This is the instance of the app database