RSQL to Prisma query adapter
npm install rsql-prismarsql-prisma, you can effortlessly transform RSQL expressions or strings into Prisma where queries, facilitating advanced data retrieval with minimal boilerplate code.
ts
npm install -S rsql-prisma
`
Usage
Get from expression @rsql/builder:
`ts
import builder from '@rsql/builder';
import { rsqlExpressionToQuery } from 'rsql-prisma';
// equals
rsqlExpressionToQuery(builder.eq('name', 'John'));
`
Get from string:
`ts
import { rsqlStringToQuery } from 'rsql-prisma';
// equals
rsqlStringToQuery('name==John');
// greater than
rsqlStringToQuery('createdAt>1970-01-01');
// in
rsqlStringToQuery('name=in=(John,Doe)');
// like
rsqlStringToQuery('name==John');
// complex query
rsqlStringToQuery('title==foo;(updated>=2024-01-01,title==bar)');
`
Type Coercion
$3
By default, values are best-effort coerced using a guessing strategy:
- true / false → boolean
- numeric values → number (when safe)
- ISO date strings → Date
- JSON-like values → parsed JSON
- otherwise → string
This ensures backward compatibility and ease of use.
$3
If you provide a Prisma model name, rsql-prisma will use Prisma DMMF to coerce values deterministically based on the actual Prisma field type.
rsqlStringToQuery('age>=18', { prisma: { model: Prisma.ModelName.Student, dmmf: Prisma.dmmf } });
Supported Prisma types:
- Int
- Float
- Decimal (coerced to number)
- BigInt
- Boolean
- DateTime
- Enum
- Json
- String
For IN / NOT IN` operators, values are automatically split and coerced element by element.