ra-data-postgrest icon indicating copy to clipboard operation
ra-data-postgrest copied to clipboard

Support `in` query filter

Open enzo-crance-statnett opened this issue 4 months ago • 0 comments

Hello.

On one of our React-Admin pages, we have to filter a list on an enum field, keeping only rows whose value for this field is in a subset selected by the user in a CheckboxGroupInput component :

<CheckboxGroupInput
  label="Enumfield"
  source="enumfield@in"
  choices={[
    { id: "a", name: "A" },
    { id: "b", name: "B" },
    { id: "c", name: "C" },
  ]}
/>

The source property here is expressed in the syntax expected by this library, so the in query filter type is correctly translated into enumfield=in. in the query to be sent to the server.

However, the filter value coming from the input component is an array of strings (e.g., ["a", "c"] if only boxes A and C are checked), and it looks like there is no support for that in this library. Indeed, what we get in the final URL filter is enumfield=in.a,c whereas it should be enumfield=in.(a,c) according to the PostgREST syntax. Could you please confirm that ?

If you are open to contributions, we could propose a fix by adding a case for the in query filter type in the parseFilters function in urlBuilder.ts, if that makes sense.

Thanks for your help.

enzo-crance-statnett avatar Oct 18 '24 10:10 enzo-crance-statnett