SQL-like expression parser to generate Where Expression for end-users
npm install sql-filtrexWHERE expressions. It supports logical operators, comparison expressions, SQL functions, and external constants.
sql-bricks, sql-bricks-sqlite, sql-bricks-postgres, or a custom wrapper).
AND, OR, && (and), || (or)
=, !=, >, <, >=, <=,<> and is null , is not null
IN clauses with constants and literals
UPPER(), LOWER(), SUBSTR()
sql-filtrex via npm:
bash
npm install sql-filtrex
`
$3
sql-filtrex requires a SQL builder library that follows the SQLBricks interface for query generation. You can install the appropriate SQLBricks variant based on your database:
`bash
For general SQL
npm install sql-bricks
For SQLite
npm install sql-bricks-sqlite
For PostgreSQL
npm install sql-bricks-postgres
`
> đź’ˇ You can also use any custom library that implements the same method interface as sql-bricks.
---
Usage
You can refer to the test files for more detailed examples. Here's a simple way to use sql-filtrex to generate a WHERE expression:
`javascript
const { filterToQuery } = require("sql-filtrex");
const sql = require("sql-bricks"); // Install the appropriate SQLBricks version for your DB engine
`
$3
`javascript
const options = {
constants: { MY_CONST: "foo" }, // Optional: replace constants in the expression
columns: ["field1", "field2"], // Optional: restrict allowed fields (empty = allow all)
functions: ["UPPER", "LOWER", "SUBSTR"], // Optional: allow specific SQL functions
};
// No DB connection needed—just provide a compatible sql-bricks instance
const filterWhere = filterToQuery(
sql,
"field1 = MY_CONST and price >= 10",
options,
);
// filterWhere is equivalent to:
// sql.and(sql.eq('field1', 'foo'), sql.gte('price', 10))
// Use it like any other sql-bricks expression
const sqlQuery = sql.select().from("my_table").where(filterWhere).all();
console.log(sqlQuery);
// Output: SELECT * FROM my_table WHERE field1 = 'foo' AND price >= 10
``