@@ -1439,7 +1439,25 @@ SQLConnector.prototype.buildSelect = function(model, filter, options) {
1439
1439
}
1440
1440
}
1441
1441
1442
+ let extraSelect = '' ;
1443
+ if ( filter . sum ) {
1444
+ extraSelect = `SUM(${ filter . sum } ) as sumOf${ filter . sum } , ` ;
1445
+ }
1446
+ if ( filter . count ) {
1447
+ extraSelect += `COUNT(${ filter . count } ) as countOf${ filter . count } , ` ;
1448
+ }
1449
+ if ( filter . avg ) {
1450
+ extraSelect += `AVG(${ filter . avg } ) as avgOf${ filter . avg } , ` ;
1451
+ }
1452
+ if ( filter . min ) {
1453
+ extraSelect += `MIN(${ filter . min } ) as minOf${ filter . min } , ` ;
1454
+ }
1455
+ if ( filter . max ) {
1456
+ extraSelect += `MAX(${ filter . max } ) as maxOf${ filter . max } , ` ;
1457
+ }
1458
+
1442
1459
let selectStmt = new ParameterizedSQL ( 'SELECT ' +
1460
+ extraSelect +
1443
1461
this . buildColumnNames ( model , filter ) +
1444
1462
' FROM ' + this . tableEscaped ( model ) ) ;
1445
1463
@@ -1449,6 +1467,10 @@ SQLConnector.prototype.buildSelect = function(model, filter, options) {
1449
1467
selectStmt . merge ( whereStmt ) ;
1450
1468
}
1451
1469
1470
+ if ( filter . groupBy ) {
1471
+ selectStmt . merge ( this . buildGroupBy ( filter . groupBy ) ) ;
1472
+ }
1473
+
1452
1474
if ( filter . order ) {
1453
1475
selectStmt . merge ( this . buildOrderBy ( model , filter . order ) ) ;
1454
1476
}
@@ -1510,7 +1532,13 @@ SQLConnector.prototype.all = function find(model, filter, options, cb) {
1510
1532
}
1511
1533
1512
1534
const objs = data . map ( function ( obj ) {
1513
- return self . fromRow ( model , obj ) ;
1535
+ const object = self . fromRow ( model , obj ) ;
1536
+ if ( obj [ `sumOf${ filter . sum } ` ] ) { object [ `sumOf${ filter . sum } ` ] = obj [ `sumOf${ filter . sum } ` ] ; }
1537
+ if ( obj [ `countOf${ filter . count } ` ] ) { object [ `countOf${ filter . count } ` ] = obj [ `countOf${ filter . count } ` ] ; }
1538
+ if ( obj [ `avgOf${ filter . avg } ` ] ) { object [ `avgOf${ filter . avg } ` ] = obj [ `avgOf${ filter . avg } ` ] ; }
1539
+ if ( obj [ `minOf${ filter . min } ` ] ) { object [ `minOf${ filter . min } ` ] = obj [ `minOf${ filter . min } ` ] ; }
1540
+ if ( obj [ `maxOf${ filter . max } ` ] ) { object [ `maxOf${ filter . max } ` ] = obj [ `maxOf${ filter . max } ` ] ; }
1541
+ return object ;
1514
1542
} ) ;
1515
1543
if ( filter && filter . include ) {
1516
1544
self . getModelDefinition ( model ) . model . include (
0 commit comments