You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
1.9 KiB

import {
QueryEditorExpression,
QueryEditorExpressionType,
QueryEditorArrayExpression,
QueryEditorOperatorExpression,
QueryEditorPropertyType,
QueryEditorGroupByExpression,
QueryEditorFunctionExpression,
QueryEditorFunctionParameterExpression,
QueryEditorPropertyExpression,
} from '../expressions';
export function createArray(
expressions: QueryEditorExpression[],
type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or = QueryEditorExpressionType.And
): QueryEditorArrayExpression {
const array = {
type,
expressions,
};
return array;
}
export function createOperator(property: string, operator: string, value?: string): QueryEditorOperatorExpression {
return {
type: QueryEditorExpressionType.Operator,
property: {
name: property,
type: QueryEditorPropertyType.String,
},
operator: {
name: operator,
value: value,
},
};
}
export function createGroupBy(column: string): QueryEditorGroupByExpression {
return {
type: QueryEditorExpressionType.GroupBy,
property: {
type: QueryEditorPropertyType.String,
name: column,
},
};
}
export function createFunction(name: string): QueryEditorFunctionExpression {
return {
type: QueryEditorExpressionType.Function,
name,
};
}
export function createFunctionWithParameter(functionName: string, params: string[]): QueryEditorFunctionExpression {
const reduce = createFunction(functionName);
reduce.parameters = params.map((name) => {
const param: QueryEditorFunctionParameterExpression = {
type: QueryEditorExpressionType.FunctionParameter,
name,
};
return param;
});
return reduce;
}
export function createProperty(name: string): QueryEditorPropertyExpression {
return {
type: QueryEditorExpressionType.Property,
property: {
type: QueryEditorPropertyType.String,
name: name,
},
};
}