Skip to content

furkando/cubejs-filter-transformer

Repository files navigation

Cube.js Filter to JS Filter Function

npm package npm version Actions Status license

This package provides a utility function to transform a Cube.js filter into a JavaScript filter function. The transformed filter function can be used to filter data based on the given filter criteria.

Installation

To install the package, you can use npm or yarn:

npm install cubejs-filter-transformer

or

yarn add cubejs-filter-transformer

Usage

Import the transformCubeFilterToJsFilter function from the package:

import { transformCubeFilterToJsFilter } from "cubejs-filter-transformer";

The transformCubeFilterToJsFilter function takes a Cube.js filter as input and returns a JS filter function. You can then use this function to filter data arrays.

Example

import { transformCubeFilterToJsFilter } from "cubejs-filter-transformer";

const filter = {
  member: "Orders.status",
  operator: "equals",
  values: ["shipped"],
};

const filterFunction = transformCubeFilterToJsFilter(filter);
const data = [
  { status: "shipped" },
  { status: "pending" },
  { status: "shipped" },
];

const filteredData = data.filter(filterFunction);
console.log(filteredData);
// Output: [{ status: 'shipped' }, { status: 'shipped' }]

API

transformCubeFilterToJsFilter(filter: Filter): FilterFunction<T>

Transforms a Cube.js filter into a JS filter function.

  • filter (required): The Cube.js filter to transform.

  • Returns: A JS filter function that can be used to filter data arrays.

transformCubeFiltersToJsFilter(filters: Filter[]): FilterFunction<T>

Transforms an array of Cube.js filters into a JS filter function.

  • filters (required): The Cube.js filters to transform.

  • Returns: A JS filter function that can be used to filter data arrays.

Filter Object

The filter parameter should be a valid Cube.js filter object. It can have the following structure:

interface Filter {
  member: string;
  operator: CubeOperatorType;
  values: any[];
}

type UnaryFilter = {
  member: string;
  operator: CubeOperatorType.SET | CubeOperatorType.NOT_SET;
};

type LogicalAndFilter = {
  and: Filter[];
};

type LogicalOrFilter = {
  or: Filter[];
};

For detailed information about the CubeOperatorType enum and other types, please refer to the @cubejs-client/core package documentation.

License

This package is licensed under the MIT License.

Contributions

Contributions are welcome! If you find any issues or have suggestions for improvements, feel free to open a GitHub issue or submit a pull request.

About

Transformer function that transforms a Cube.js filter to a JavaScript filter function.

Resources

License

Stars

Watchers

Forks

Packages

No packages published