Introduction
qbjs - An ORM-agnostic query builder for building type-safe queries from API request query strings
What is qbjs?
qbjs (Query Builder) is an ORM-agnostic query builder that transforms API request query strings into type-safe database queries. It provides a clean Parser → AST → Compiler architecture that separates concerns and makes it easy to support multiple ORMs and databases.
Key Features
- Parser → AST → Compiler Architecture: Clean separation of concerns with a well-defined Abstract Syntax Tree
- Type-Safe: Full TypeScript support with comprehensive type definitions
- ORM-Agnostic: Works with Drizzle ORM (PostgreSQL, MySQL, SQLite)
- Security-First: Built-in security configuration for field allowlisting and operator restrictions
- Framework Integration: First-class support for Hono with middleware included
- Flexible Filtering: Support for comparison, string, and logical operators
- Pagination & Sorting: Built-in support for pagination and multi-field sorting
How It Works
Query String → Parser → AST → Compiler → Database Query- Parser: Transforms query strings like
?filter[status][eq]=active&sort=-createdAtinto a structured AST - AST: A well-defined intermediate representation that's easy to validate and transform
- Compiler: Converts the AST into database-specific queries (Drizzle ORM)
Quick Example
import { createQueryBuilder, createDrizzlePgCompiler } from "@qbjs/core";
import { users } from "./db/schema";
const queryBuilder = createQueryBuilder({
config: {
allowedFields: ["id", "name", "email"],
maxLimit: 100,
},
compiler: createDrizzlePgCompiler(),
});
// Parse and compile: /users?filter[status][eq]=active&sort=-createdAt
const result = queryBuilder.executeFromUrl(request.url, users);Getting Started
Installation
Install qbjs and its peer dependencies
Quick Start
Build your first query in minutes
Basic Usage
Learn the query string format
Examples
See all examples here
Core Concepts
Architecture
Understand the Parser → AST → Compiler pipeline
Query AST
Learn about the Abstract Syntax Tree structure
Security
Configure field allowlisting and operator restrictions
