@@ -32,6 +32,40 @@ function sqlAggregate(fn, f){
3232 return ', ' + fn + '("' + f . column + '"' + num + ')' + tcast + ' AS "' + f . id + '_' + fn + '"'
3333}
3434
35+ const fnPrep = fields => data => {
36+ // - nesting data per field
37+ const pStats = {
38+ count : data . count ,
39+ }
40+ if ( config . wTimestamp ) {
41+ // - last update
42+ pStats . u_date_max = data . u_date_max
43+ // - number of updates this week
44+ pStats . u_date_week_count = data . u_date_week_count
45+ // - first insert
46+ pStats . c_date_min = data . c_date_min
47+ }
48+ if ( config . wComments ) {
49+ pStats . nb_comments = data . nb_comments
50+ }
51+ fields . forEach ( ( f ) => {
52+ if ( dico . fieldIsNumeric ( f ) ) {
53+ let item = {
54+ min : data [ f . id + '_min' ] ,
55+ max : data [ f . id + '_max' ] ,
56+ }
57+ if ( data [ f . id + '_avg' ] ) {
58+ item . avg = data [ f . id + '_avg' ]
59+ }
60+ if ( data [ f . id + '_sum' ] ) {
61+ item . sum = data [ f . id + '_sum' ]
62+ }
63+ pStats [ f . id ] = item
64+ }
65+ } )
66+ return pStats
67+ }
68+
3569// - returns a summary on a single table
3670function numbers ( req , res ) {
3771 logger . logReq ( 'GET STATS' , req ) ;
@@ -70,7 +104,7 @@ function numbers(req, res) {
70104 sql += ', sum(nb_comments::integer)::integer AS nb_comments'
71105 }
72106 sql += sqlFROM
73- query . runQuery ( res , sql , [ ] , true ) ;
107+ query . runQuery ( res , sql , [ ] , true , null , null , fnPrep ( m . fields ) ) ;
74108 } else {
75109 errors . badRequest ( res , 'Invalid model: "' + mid + '".' )
76110 }
0 commit comments