feature addition: aggregate functions

This commit is contained in:
oof1lab
2017-10-31 17:56:45 +00:00
parent 8ca85a98a5
commit 65bbf5655d
6 changed files with 111 additions and 7 deletions

View File

@@ -168,6 +168,12 @@ class Xapi {
.get(this.asyncMiddleware(this.groupBy.bind(this)));
break;
case 'aggregate':
this.app.route(routes[i]['routeUrl'])
.get(this.asyncMiddleware(this.aggregate.bind(this)));
break;
}
}
}
@@ -189,8 +195,6 @@ class Xapi {
}
}
async create(req, res) {
@@ -431,6 +435,41 @@ class Xapi {
}
async aggregate(req, res) {
let tableName = req.app.locals._tableName;
let query = 'select '
let params = []
let fields = req.query._fields.split(',');
for (var i = 0; i < fields.length; ++i) {
if (i) {
query = query + ','
}
query = query + ' min(??) as ?,max(??) as ?,avg(??) as ?,sum(??) as ?,stddev(??) as ?,variance(??) as ? '
params.push(fields[i]);
params.push('min_of_' + fields[i]);
params.push(fields[i]);
params.push('max_of_' + fields[i]);
params.push(fields[i]);
params.push('avg_of_' + fields[i]);
params.push(fields[i]);
params.push('sum_of_' + fields[i]);
params.push(fields[i]);
params.push('stddev_of_' + fields[i]);
params.push(fields[i]);
params.push('variance_of_' + fields[i]);
}
query = query + ' from ??'
params.push(tableName)
var results = await this.mysql.exec(query, params);
res.status(200).json(results);
}
/**************** START : files related ****************/
downloadFile(req, res) {
@@ -463,6 +502,7 @@ class Xapi {
}
}
/**************** END : files related ****************/
}