@react-querybuilder/drizzle
TypeScript icon, indicating that this package has built-in type declarations

8.7.0 • Public • Published

@react-querybuilder/drizzle

Augments react-querybuilder with Drizzle ORM integration.

Full documentation

[!TIP]

This package is unnecessary, and only supports Drizzle's query builder API (like db.select().from(table).where(...)) anyway.

Recommended alternatives

For Drizzle's relational queries API, use formatQuery from react-querybuilder with the "drizzle" format. Assign the result to the where property of .findMany() or a related function, like so:

import { formatQuery } from 'react-querybuilder/formatQuery';
const where = formatQuery(query, 'drizzle');
const results = db.query.myTable.findMany({ where });

For Drizzle's query builder API, use the "drizzle" format in the same way as above and then pass a table definition and Drizzle operators into the generated function. Pass the result of that call to .where(), like so:

import { getOperators } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/bun-sqlite';
import { sqliteTable, text } from 'drizzle-orm/sqlite-core';
import { formatQuery } from 'react-querybuilder/formatQuery';

const db = drizzle(process.env.DB_FILE_NAME!);
const table = sqliteTable('musicians', {
  firstName: text(),
  lastName: text(),
});

const whereFn = formatQuery(query, 'drizzle');
const whereObj = whereFn(table, getOperators());
const results = db.select().from(table).where(whereObj);

Installation

npm i react-querybuilder @react-querybuilder/drizzle
# OR yarn add / pnpm add / bun add

Usage

To produce a Drizzle query based on a React Query Builder query object, first generate a rule group processor with generateDrizzleRuleGroupProcessor using your table config (or a plain object mapping field names to Drizzle Columns). Then run formatQuery, assigning your rule group processor as ruleGroupProcessor.

import { formatQuery } from 'react-querybuilder';
import { generateDrizzleRuleGroupProcessor } from '@react-querybuilder/drizzle';
import { drizzle } from 'drizzle-orm/bun-sqlite';
import { sqliteTable } from 'drizzle-orm/sqlite-core';
import { fields } from './fields';

const db = drizzle(process.env.DB_FILE_NAME!);

const table = sqliteTable('table', {
  firstName: text(),
  lastName: text(),
});

const ruleGroupProcessor = generateDrizzleRuleGroupProcessor(table);

const sqlWhere = formatQuery(query, { fields, ruleGroupProcessor });

const results = db.select().from(table).where(sqlWhere);

/@react-querybuilder/drizzle/

    Package Sidebar

    Install

    npm i @react-querybuilder/drizzle

    Weekly Downloads

    107

    Version

    8.7.0

    License

    MIT

    Unpacked Size

    46.7 kB

    Total Files

    20

    Last publish

    Collaborators

    • jakeboone02