1import { 2 QueryEditorExpression, 3 QueryEditorExpressionType, 4 QueryEditorArrayExpression, 5 QueryEditorOperatorExpression, 6 QueryEditorPropertyType, 7 QueryEditorGroupByExpression, 8 QueryEditorFunctionExpression, 9 QueryEditorFunctionParameterExpression, 10 QueryEditorPropertyExpression, 11} from '../expressions'; 12 13export function createArray( 14 expressions: QueryEditorExpression[], 15 type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or = QueryEditorExpressionType.And 16): QueryEditorArrayExpression { 17 const array = { 18 type, 19 expressions, 20 }; 21 22 return array; 23} 24 25export function createOperator(property: string, operator: string, value?: string): QueryEditorOperatorExpression { 26 return { 27 type: QueryEditorExpressionType.Operator, 28 property: { 29 name: property, 30 type: QueryEditorPropertyType.String, 31 }, 32 operator: { 33 name: operator, 34 value: value, 35 }, 36 }; 37} 38export function createGroupBy(column: string): QueryEditorGroupByExpression { 39 return { 40 type: QueryEditorExpressionType.GroupBy, 41 property: { 42 type: QueryEditorPropertyType.String, 43 name: column, 44 }, 45 }; 46} 47export function createFunction(name: string): QueryEditorFunctionExpression { 48 return { 49 type: QueryEditorExpressionType.Function, 50 name, 51 }; 52} 53 54export function createFunctionWithParameter(functionName: string, params: string[]): QueryEditorFunctionExpression { 55 const reduce = createFunction(functionName); 56 reduce.parameters = params.map((name) => { 57 const param: QueryEditorFunctionParameterExpression = { 58 type: QueryEditorExpressionType.FunctionParameter, 59 name, 60 }; 61 62 return param; 63 }); 64 65 return reduce; 66} 67 68export function createProperty(name: string): QueryEditorPropertyExpression { 69 return { 70 type: QueryEditorExpressionType.Property, 71 property: { 72 type: QueryEditorPropertyType.String, 73 name: name, 74 }, 75 }; 76} 77