et

effortlessness, et al.

et

effortlessness, serverside et al.

$ npm install et

This example uses jugglingdb as a resource to provide schema based database access

 
module.exports = 
 
    config: (opts) -> 
 
        # 
        # config() is called when the server starts up 
        # to allow for things like schema definitions 
        #  
 
        opts.resource.database1.define 'things'
 
            id: Number
            name: String
            location: String
 
    get: (req, res) ->
 
        # 
        # The presence of a get() method here causes the  
        # automatic creation of the rest endpoint '/things/:id'  
        # 
 
        Thing = req.et.resource.database1.models.thing
 
        Thing.find req.params.id(arg1, data, arg3) -> 
 
            # 
            # apologies, have not looked into what args1&3 are... 
            # 
 
            res.send data
 
    # 
    # although called a model, this is more precisely a combination 
    # of model and controller 
    #  
    #   ie. a "controdel" 
    #  
 
 
 
 
et      = require('et')
Schema  = require('jugglingdb').Schema
 
server  = et.al
 
    port: 3001
 
    resource:
 
        # 
        # resources become available in the models 
        # (see above) 
        # 
 
        database1: new Schema 'postgres'
 
            host: 'db.domain.com',
            database: 'dbname',
            username: 'dbuser',
            password: 'passrod'
 
    models:
 
        # 
        # link 'thing.coffee' as a 'model' 
        # 
 
        things: require './thing'
 
    static:
 
        scripts:
 
            # 
            # key (above) must match last path element (below) 
            # 
 
            path: __dirname + '/nested/path/to/scripts'
 
 
 
 
$ coffee server
...
$ curl http://localhost:3001/things/1
 
{
    "id": 1
    "name": "Venus of Hohle Fels"
    "location": "Schelklingen, Germany"
}
 
  • TODO Added post() to enable http POST endpoints
  • TODO Configurables for redis session store (eg. redis:hostname:port:password)
  • Added middleware config opts.before and opts.use callbacks
  • Added use of env vars APP_NAME, APP_VERSION, APP_PORT, APP_LOGLEVEL (if present)
  • Added use of restify app name and version
  • Added overideable request logger, first into the connect stack
  • Added configurable bunyan logger
  • Added auto serve static assets from `opts.static.key.path (if present)
  • Added auto spawn a restify server if no opts.app provided
  • et.al( opts ) returns the running server
  • Switched specs to mocha
  • Added call to model.config (if present), to configure resources at startup
  • Added opts.resource available at startup and on req._et.resource
  • Added basic local auth using passport
  • Added basic redis session using connect.session (very defaulty! See TODO in src/session)
  • Added et.al() all encompasser
  • Added support for http GET to et
  • Transparently plugin to express' routing