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
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,
|
|
},
|
|
};
|
|
}
|
|
|