22
33// setup
44const http = require ( 'http' )
5+ const Pg = require ( 'pg' ) . Pool
56const tinyParams = require ( 'tiny-params' )
67const port = process . env . PORT || process . env . port || 8091
78const handlers = {
@@ -23,11 +24,12 @@ const scrud = {
2324
2425// globals
2526let server
27+ let pgPool
2628let base = ''
2729let baseRgx = new RegExp ( `^/?${ base } /` )
2830let resources = { }
2931
30- // helpers
32+ // local helpers
3133const cleanPath = ( url ) => {
3234 return decodeURIComponent ( url ) . replace ( baseRgx , '' ) . replace ( / \/ $ / , '' )
3335}
@@ -37,6 +39,19 @@ const parseId = (url) => {
3739 return ( id || '' ) . match ( / ^ \d + $ / ) ? parseInt ( id , 10 ) : id || null
3840}
3941
42+ const pgRun = ( query , args ) => {
43+ if ( ! pgPool ) return Promise . reject ( new Error ( 'no database configured' ) )
44+ return new Promise ( ( resolve , reject ) => {
45+ pgPool . connect ( ( err , client , done ) => {
46+ if ( err ) return reject ( err )
47+ client . query ( query , args , ( err , result ) => {
48+ done ( err )
49+ return err ? reject ( err ) : resolve ( result . rows )
50+ } )
51+ } )
52+ } )
53+ }
54+
4055// exports
4156module . exports = { register, start, logger, _find, _findAll, _create, _save}
4257
@@ -56,6 +71,7 @@ function start (opts = {}) {
5671 return new Promise ( ( resolve , reject ) => {
5772 server = http . createServer ( handleRequest )
5873 server . listen ( opts . port || port )
74+ if ( opts . postgres ) pgPool = new Pg ( opts . postgres )
5975 return resolve ( server )
6076 } )
6177}
0 commit comments