@@ -8,13 +8,6 @@ const tinyParams = require('tiny-params')
88const zlib = require ( 'zlib' )
99const port = process . env . PORT || process . env . port || 8091
1010const defaultTimeout = 120000
11- const handlers = {
12- search : ( name , req ) => findAll ( name , req . params ) ,
13- create : ( name , req ) => create ( name , req . params ) ,
14- read : ( name , req ) => find ( name , req . id , req . params ) ,
15- update : ( name , req ) => save ( name , req . id , req . params ) ,
16- delete : ( name , req ) => destroy ( name , req . id , req . params )
17- }
1811const scrud = {
1912 GET : 'search' ,
2013 'GET?' : 'search' ,
@@ -107,6 +100,20 @@ const filterObj = (obj, ary) => {
107100 return base
108101}
109102
103+ // database action handlers
104+ const find = ( rsrc , id , params ) => pgActions ( rsrc , 'read' , id , params )
105+ const findAll = ( rsrc , params ) => pgActions ( rsrc , 'search' , null , params )
106+ const create = ( rsrc , params ) => pgActions ( rsrc , 'create' , null , params )
107+ const save = ( rsrc , id , params ) => pgActions ( rsrc , 'update' , id , params )
108+ const destroy = ( rsrc , id , params ) => pgActions ( rsrc , 'delete' , id , params )
109+ const handlers = {
110+ search : ( name , req ) => findAll ( name , req . params ) ,
111+ create : ( name , req ) => create ( name , req . params ) ,
112+ read : ( name , req ) => find ( name , req . id , req . params ) ,
113+ update : ( name , req ) => save ( name , req . id , req . params ) ,
114+ delete : ( name , req ) => destroy ( name , req . id , req . params )
115+ }
116+
110117// exports
111118module . exports = {
112119 register,
@@ -289,43 +296,25 @@ function authenticate (jwt) {
289296 } )
290297}
291298
292- // helper: find resource
293- function find ( resource , id , params ) {
294- if ( ! id && id !== 0 ) return Promise . reject ( noIdErr ( ) )
295- params . id = id
296- params . id_array = [ id ]
297- let firstRecord = ( d ) => Promise . resolve ( d [ 0 ] )
298- return callPgFunc ( `${ pgPrefix } ${ resource } _read` , params ) . then ( firstRecord )
299- }
300-
301- // helper: find set of resources
302- function findAll ( resource , params ) {
303- Object . keys ( params ) . forEach ( ( k ) => {
304- if ( ! Array . isArray ( params [ k ] ) ) return
305- params [ `${ k } _array` ] = params [ k ]
306- } )
307- return callPgFunc ( `${ pgPrefix } ${ resource } _search` , params )
308- }
309-
310- // helper: create resource
311- function create ( resource , params ) {
312- let firstRecord = ( d ) => Promise . resolve ( d [ 0 ] )
313- return callPgFunc ( `${ pgPrefix } ${ resource } _create` , params ) . then ( firstRecord )
314- }
315-
316- // helper: update resource
317- function save ( resource , id , params ) {
318- if ( ! id && id !== 0 ) return Promise . reject ( noIdErr ( ) )
319- params . id = id
299+ // helper: handle all resource helpers
300+ function pgActions ( resource , action , id , params ) {
301+ let checkId = { read : true , update : true , delete : true }
302+ if ( checkId [ action ] ) {
303+ if ( ! id && id !== 0 ) return Promise . reject ( noIdErr ( ) )
304+ if ( action === 'read' ) params . id_array = [ id ]
305+ params . id = id
306+ }
320307 let firstRecord = ( d ) => Promise . resolve ( d [ 0 ] )
321- return callPgFunc ( `${ pgPrefix } ${ resource } _update` , params ) . then ( firstRecord )
322- }
323-
324- // helper: delete resource
325- function destroy ( resource , id , params ) {
326- if ( ! id && id !== 0 ) return Promise . reject ( noIdErr ( ) )
327- params . id = id
328- return callPgFunc ( `${ pgPrefix } ${ resource } _delete` , params )
308+ let first = { create : true , read : true , update : true }
309+ if ( action === 'search' ) {
310+ Object . keys ( params ) . forEach ( ( k ) => {
311+ if ( ! Array . isArray ( params [ k ] ) ) return
312+ params [ `${ k } _array` ] = params [ k ]
313+ } )
314+ }
315+ let funcName = `${ pgPrefix } ${ resource } _${ action } `
316+ if ( ! first [ action ] ) return callPgFunc ( funcName , params )
317+ return callPgFunc ( funcName , params ) . then ( firstRecord )
329318}
330319
331320// default handler for all resource methods
0 commit comments