Runs CRUD queries and returns a canned json response (res.json) for Express.
Not ready for use.
{
data: [collection] / {item}
error: true
e: error object
}
Examples are in Coffeescript
Express route:
express = require('express')
router = express.Router()
Resource = require('../../lib/resource.js')
config = require('../../config/env.json') # config for PG connection
router.get '/', (req, res) ->
collection = new Resource(config)
collection.select res
router.get '/:id', (req, res) ->
item = new Resource(config)
item.selectOne req.params.id, res
router.put '/:id', (req, res) ->
item = new Resource(config)
item.update req.body, res
router.post '/', (req, res) ->
item = new Resource(config)
item.insert req.body, res
router.delete '/', (req, res) ->
item = new Resource(config)
item.delete req.body, res
module.exports = router
resource.js
DbResponse = require "pg-to-express-json"
class Comment extends DbResponse
tablename: (context)->
switch context
when "select", "selectOne"
"""
(
select
c.*,
u.first_name,
u.last_name,
u.email,
u.organization,
u.avatar
from comments c
left join users u on c.user_id = u.id
) comments
"""
else
"comments"
attribute_whitelist: [
"id"
"tenant_id"
"user_id"
"project_id"
"work_unit_id"
"parent_id"
"description"
"depth"
"ancestry"
"name_ancestry"
]
module.exports = Comment
env.json
{
"database": {
"user": "user",
"host": "database_server_host",
"database": "database",
"password": "password",
"port": 5432
}
}
Everything is overwritable, but these are the ones of particular interest:
tablename
validate
selectQuery
selectOneQuery
updateQuery
insertQuery
deleteQuery
Returns an array of rows
Returns an individual object
Inserts an object
Updates an object
Deletes an object