feat(ui): support infix functions when building select statement from configuration

pull/5656/head
Pavel Zavora 2021-01-06 13:57:09 +01:00
parent 54639f596d
commit fbbee7cfe3
1 changed files with 9 additions and 5 deletions

View File

@ -51,7 +51,7 @@ export function buildSelect(
}
const rpSegment = retentionPolicy ? `"${retentionPolicy}"` : ''
const fieldsClause = buildFields(fields, shift)
const fieldsClause = buildFields(fields, shift).join(', ')
const fullyQualifiedMeasurement = `"${database}".${rpSegment}."${measurement}"`
const statement = `SELECT ${fieldsClause} FROM ${fullyQualifiedMeasurement}`
return statement
@ -89,9 +89,9 @@ export function buildSelectStatement(config: QueryConfig): string {
return buildSelect(config)
}
function buildFields(fieldFuncs: Field[], shift = '', useAlias = true): string {
function buildFields(fieldFuncs: Field[], shift = '', useAlias = true): string[] {
if (!fieldFuncs) {
return ''
return []
}
return fieldFuncs
@ -119,11 +119,15 @@ function buildFields(fieldFuncs: Field[], shift = '', useAlias = true): string {
case 'func': {
const args = buildFields(f.args, '', false)
const alias = f.alias ? ` AS "${f.alias}${shift}"` : ''
return `${f.value}(${args})${alias}`
return `${f.value}(${args.join(', ')})${alias}`
}
case 'infixfunc': {
const args = buildFields(f.args, '', false)
const alias = f.alias ? ` AS "${f.alias}"` : ''
return `${args[0]}${f.value}${args[1]}${alias}`
}
}
})
.join(', ')
}
export function buildWhereClause({