A composable query builder for Ecto that enables flexible and secure filtering in Elixir applications.
Inquisitor is a library for building composable queries in Ecto, the database wrapper for Elixir. It simplifies adding dynamic filtering to applications by providing a structured way to handle query parameters from web requests, making it easier to create flexible APIs without manual query construction.
Elixir developers building web APIs with Phoenix and Ecto who need to implement dynamic, parameter-based querying, such as for search or filter endpoints.
Developers choose Inquisitor for its security-first, opt-in design that prevents unintended data exposure, and its composable, extensible architecture that supports custom query handlers and plugins like JSON API compliance.
Composable query builder for Ecto
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Opt-in by default prevents unintended data exposure; requires explicit whitelists or handlers, as emphasized in the README's security section.
Supports pattern-matched handlers for complex cases like date ranges or non-model fields, demonstrated in the custom query examples.
Dynamically constructs Ecto queries from request parameters, reducing boilerplate in API endpoints without manual query construction.
Has a plugin ecosystem, such as inquisitor_jsonapi for JSON API spec compliance, allowing for standardized extensions.
Being opt-in requires writing custom handlers or whitelists for every parameter, increasing initial setup compared to automatic solutions.
Developers must understand Elixir's pattern matching and Ecto query syntax to define effective handlers, which can be steep for newcomers.
Only a few plugins are available, such as inquisitor_jsonapi, which may restrict out-of-the-box functionality for niche use cases.