refactor column function handling

This commit is contained in:
Sven Klemm
2018-07-28 21:30:08 +02:00
parent 6ca7a03975
commit 5327580939
5 changed files with 52 additions and 17 deletions

View File

@ -135,7 +135,7 @@ export default class PostgresQuery {
query = columnName.params[0];
let aggregate = _.find(column, (g: any) => g.type === 'aggregate');
let special = _.find(column, (g: any) => g.type === 'special');
let special = _.find(column, (g: any) => g.type === 'window');
if (aggregate) {
if (special) {
@ -155,9 +155,13 @@ export default class PostgresQuery {
}
let over = overParts.join(' ');
let curr: string;
let prev: string;
switch (special.params[0]) {
case 'increase':
query = query + ' - lag(' + query + ') OVER (' + over + ')';
curr = query;
prev = 'lag(' + curr + ') OVER (' + over + ')';
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
break;
case 'rate':
let timeColumn = this.target.timeColumn;
@ -165,11 +169,14 @@ export default class PostgresQuery {
timeColumn = 'min(' + timeColumn + ')';
}
let curr = query;
let prev = 'lag(' + curr + ') OVER (' + over + ')';
curr = query;
prev = 'lag(' + curr + ') OVER (' + over + ')';
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
query += '/extract(epoch from ' + timeColumn + ' - lag(' + timeColumn + ') OVER (' + over + '))';
break;
default:
query = special.params[0] + '(' + query + ') OVER (' + over + ')';
break;
}
}