UNPKG

refine-sanity

Version:

Data provider for refine with sanity. refine is a React-based framework for building internal tools, rapidly. Sanity is headless CMS.

49 lines (44 loc) 1.38 kB
import { CrudFilters, CrudOperators } from "@refinedev/core"; const mapOperator = (operator: CrudOperators) => { switch (operator) { case "eq": return "=="; case "ne": return "!="; case "lt": return "<"; case "gt": return ">"; case "lte": return "<="; case "gte": return ">="; case "in": case "nin": return "in"; case "contains": case "ncontains": return "match"; default: throw new Error(`Does't support Operator ${operator} yet.`); } } const negativeFilters = ["nin", "ncontains"]; export const generateFilter = (filters?: CrudFilters) => { const queryFilters = filters ?.map((filter) => { if (Array.isArray(filter?.value) && filter.value?.length === 0) { return undefined; } if ("field" in filter) { const { field, operator, value } = filter; const mappedOperator = mapOperator(operator); const isNegative = negativeFilters.includes(operator); const filterStr = `${field} ${mappedOperator} "${value}"`; return isNegative ? `!(${filterStr})` : filterStr; } return undefined; }) .filter((v) => v); return queryFilters?.join(" && "); };