Nefarious Planetary Meddling

    pg-to-express-json

    0.0.8 • Public • Published

    pg-to-express-json

    Runs CRUD queries and returns a canned json response (res.json) for Express.

    Not ready for use.

    Response format:

    {
      data: [collection] / {item}
      error: true
      e: error object
    }
    

    Usage

    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
      }
    }
    

    Overwiteable functions

    Everything is overwritable, but these are the ones of particular interest:

    tablename

    validate

    selectQuery

    selectOneQuery

    updateQuery

    insertQuery

    deleteQuery

    Options

    API

    select(response)

    Returns an array of rows

    selectOne(id, response)

    Returns an individual object

    insert (object, response)

    Inserts an object

    update (object, response)

    Updates an object

    delete(id, response)

    Deletes an object

    Install

    npm i pg-to-express-json

    DownloadsWeekly Downloads

    8

    Version

    0.0.8

    License

    MIT

    Unpacked Size

    25.6 kB

    Total Files

    21

    Last publish

    Collaborators

    • braintapper