Skip to content

Instantly share code, notes, and snippets.

@radiosilence
Last active December 24, 2015 16:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radiosilence/6826930 to your computer and use it in GitHub Desktop.
Save radiosilence/6826930 to your computer and use it in GitHub Desktop.
http = require 'http'
pg = require('pg').native
Promise = require 'bluebird'
reportError = (res, err, chains) ->
res.writeHead 500,
'content-type': 'application/json'
res.write JSON.stringify err
getClient = (conString) ->
new Promise (resolve, reject) ->
pg.connect conString, (err, client, done) ->
if err
return reject(err)
resolve [client, done]
doQuery = (query, params, [client, done]) ->
new Promise (resolve, reject) ->
client.query query, params, (err, result) ->
if err
return reject(err)
done()
resolve(result.rows)
respond = (res, data) ->
res.writeHead 200,
'content-type': 'application/json'
res.write JSON.stringify data
handle = (req, res) ->
getClient("postgres://qrs:qrs@localhost/qrs").then((client_done) ->
doQuery 'SELECT NOW() AS "theTime"', [], client_done
).then((data) ->
respond res, data
).catch((err) ->
reportError res, err
).finally(->
res.end()
)
main = ->
handle undefined,
writeHead: -> null
write: (data) ->
console.log(data)
end: (data) ->
if data
@write data
pg.end()
# main()
httpServer = http.Server (req, res) ->
handle(req, res)
httpServer.listen 1337
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment