@@ -52,7 +52,7 @@ const fnPrep = fields => data => {
5252 pStats . nb_comments = data . nb_comments
5353 }
5454 fields . forEach ( f => {
55- if ( dico . fieldIsNumeric ( f ) ) {
55+ if ( dico . fieldIsNumeric ( f ) && ! f . noStats ) {
5656 let item = {
5757 min : data [ f . id + '_min' ] ,
5858 max : data [ f . id + '_max' ] ,
@@ -77,37 +77,43 @@ function numbers(req, res) {
7777 m = dico . getModel ( mid )
7878
7979 if ( m ) {
80- let sql = 'SELECT count(*)::integer AS count' ;
81- const sqlFROM = ' FROM ' + m . schemaTable ;
80+ if ( ! m . noStats ) {
81+ let sql = 'SELECT count(*)::integer AS count' ;
82+ const sqlFROM = ' FROM ' + m . schemaTable ;
8283
83- m . fields . forEach ( function ( f ) {
84- if ( dico . fieldIsNumeric ( f ) ) {
85- if ( ! dico . fieldIsDateOrTime ( f ) ) {
86- sql += sqlAggregate ( 'avg' , f )
84+ m . fields . forEach ( function ( f ) {
85+ if ( dico . fieldIsNumeric ( f ) && ! f . noStats ) {
86+ if ( ! dico . fieldIsDateOrTime ( f ) ) {
87+ sql += sqlAggregate ( 'avg' , f )
88+ }
89+ if ( f . type === ft . money || f . type === ft . int ) {
90+ sql += sqlAggregate ( 'sum' , f )
91+ }
92+ sql += sqlAggregate ( 'min' , f )
93+ sql += sqlAggregate ( 'max' , f )
94+ //}else if(f.type===ft.lov){
95+ // sql += ',(select id, count("'+f.column+'")::integer FROM '+m.schemaTable+' GROUP BY id LIMIT 3)'
8796 }
88- if ( f . type === ft . money || f . type === ft . int ) {
89- sql += sqlAggregate ( 'sum' , f )
90- }
91- sql += sqlAggregate ( 'min' , f )
92- sql += sqlAggregate ( 'max' , f )
97+ } )
98+ if ( config . wTimestamp ) {
99+ // - last update
100+ sql += ', max(' + config . updatedDateColumn + ') AS u_date_max' +
101+ // - number of insert & updates this week
102+ ', (SELECT count(' + m . pKey + ')::integer ' + sqlFROM +
103+ ' WHERE ' + config . updatedDateColumn + ' > NOW() - interval \'7 days\')' +
104+ ' AS u_date_week_count' +
105+ // - first insert
106+ ', min(' + config . createdDateColumn + ') AS c_date_min'
93107 }
94- } )
95- if ( config . wTimestamp ) {
96- // - last update
97- sql += ', max(' + config . updatedDateColumn + ') AS u_date_max' +
98- // - number of insert & updates this week
99- ', (SELECT count(' + m . pKey + ')::integer ' + sqlFROM +
100- ' WHERE ' + config . updatedDateColumn + ' > NOW() - interval \'7 days\')' +
101- ' AS u_date_week_count' +
102- // - first insert
103- ', min(' + config . createdDateColumn + ') AS c_date_min'
104- }
105- if ( config . wComments ) {
106- // - number of comments
107- sql += ', sum(nb_comments::integer)::integer AS nb_comments'
108+ if ( config . wComments ) {
109+ // - number of comments
110+ sql += ', sum(nb_comments::integer)::integer AS nb_comments'
111+ }
112+ sql += sqlFROM
113+ query . runQuery ( res , sql , [ ] , true , null , null , fnPrep ( m . fields ) ) ;
114+ } else {
115+ errors . badRequest ( res , 'noStats set on model "' + mid + '".' )
108116 }
109- sql += sqlFROM
110- query . runQuery ( res , sql , [ ] , true , null , null , fnPrep ( m . fields ) ) ;
111117 } else {
112118 errors . badRequest ( res , 'Invalid model: "' + mid + '".' )
113119 }
0 commit comments