@krsamir/ag-grid-knex-helper
v1.0.1
Published
utility library based in knex to use ag grid filters
Downloads
302
Readme
AG Grid Knex Helper
Convert AG Grid filter models into Knex.js query builders seamlessly.
This package helps transform AG Grid filter objects into SQL queries using Knex.
Features
- Supports AG Grid filter model
- Converts filters into Knex queries
- Supports:
- Text filters
- Number filters
- Date filters
- AND/OR conditions
- Works with PostgreSQL via Knex
- Lightweight and easy to integrate
Installation
npm install @krsamir/ag-grid-knex-helperor
yarn add @krsamir/ag-grid-knex-helperRequirements
This package currently depends on:
Usage
Import
import AGGridFilters from "@krsamir/ag-grid-knex-helper";Initialize
const agGridFilter = new AGGridFilters({
client: knex(`${ENVIRONMENT.KNEX_SCHEMA}.${CONSTANTS.TABLES.NAME}`),
});Apply Filters
const query = agGridFilter.filter(filter);Get SQL Query String
const sql = agGridFilter.filter(filter)?.toString();Example
AG Grid Filter Model
const filter = {
total_target: {
filter_type: "number",
operator: "OR",
conditions: [
{
filter_type: "number",
type: "greaterThan",
filter: 2,
},
{
filter_type: "number",
type: "equals",
filter: 10,
},
],
},
created_at: {
filter_type: "date",
operator: "AND",
conditions: [
{
date_from: "2026-05-05 00:00:00",
date_to: "2026-05-27 00:00:00",
filter_type: "date",
type: "inRange",
},
{
date_from: "2026-05-05 00:00:00",
filter_type: "date",
type: "greaterThan",
},
],
},
title: {
filter_type: "text",
operator: "OR",
conditions: [
{
filter_type: "text",
type: "contains",
filter: "a",
},
{
filter_type: "text",
type: "contains",
filter: "b",
},
],
},
};Generated Query
select *
from campaign
where (
(
total_target > 2
or total_target = 10
)
)
and (
(
created_at between '2026-05-05'
and '2026-05-27'
)
and created_at > '2026-05-05'
)
and (
(
title like '%a%'
or title like '%b%'
)
)Supported Filters
Text Filters
| Type | Description | | ----------- | --------------------- | | contains | Contains text | | notContains | Does not contain text | | equals | Exact match | | notEqual | Not equal | | startsWith | Starts with | | endsWith | Ends with | | blank | NULL values | | notBlank | NOT NULL values |
Number Filters
| Type | Description | | ------------------ | --------------------- | | equals | Equal | | notEqual | Not equal | | greaterThan | Greater than | | greaterThanOrEqual | Greater than or equal | | lessThan | Less than | | lessThanOrEqual | Less than or equal | | inRange | Between two values | | blank | NULL values | | notBlank | NOT NULL values |
Date Filters
| Type | Description | | ----------- | ----------------- | | equals | Exact date | | notEqual | Not equal | | greaterThan | Greater than | | lessThan | Less than | | inRange | Between two dates | | blank | NULL values | | notBlank | NOT NULL values |
Notes
- Currently optimized for PostgreSQL
- Uses Knex query builder internally
- AG Grid filter model structure is expected
- Date filters use SQL DATE comparison
Roadmap
Planned improvements:
- TypeScript support
- MySQL support
- SQLite support
- Custom filter registration
- Nested filter groups
- Better validation
- Case-insensitive text search
License
MIT
Author
Samir Kumar
GitHub: https://github.com/krsamir
