Prisma adapter for ORM Bridge
npm install @orm-bridge/prismaPrisma adapter for ORM Bridge - Build complex SQL queries with pagination, search, and filtering for MySQL, PostgreSQL, and MSSQL.
---
``bash`
npm install @orm-bridge/prisma @prisma/client
Peer Dependencies:
- @prisma/client >= 5.0.0
---
`typescript
import { PrismaClient } from '@prisma/client';
import { BaseSql, PrismaExecutor, DatabaseType } from '@orm-bridge/prisma';
// 1. Setup Prisma
const prisma = new PrismaClient();
const executor = new PrismaExecutor(prisma, DatabaseType.POSTGRESQL);
// 2. Create your query class
class UserQuery extends BaseSql {
rawSQL() {
return
SELECT id, name, email, created_at
FROM users
WHERE status = 'active'
;
}
searchColumns() {
return {
name: { op: 'i_cont', type: 'string' },
email: { op: 'i_cont', type: 'string' }
};
}
primaryKeyField() {
return ['id'];
}
}
// 3. Execute query with pagination
const result = await UserQuery.call(executor, {
page: 1,
perPage: 20,
searchTerm: 'john'
});
console.log(result.meta); // { page: 1, perPage: 20, totalRows: 45, totalPages: 3 }
console.log(result.records); // [{ id: 1, name: 'John...', ... }]
`
---
ā
Automatic pagination - No manual LIMIT/OFFSET
ā
Global search - Search across multiple columns
ā
Advanced filtering - 26+ operators (eq, like, in, gt, etc.)
ā
Parameter conversion - Auto-converts to $1, $2 (PostgreSQL) or ? (MySQL)
ā
Composite keys - Support for multi-column primary keys
ā
Type-safe - Full TypeScript support
---
Unlike Sequelize, Prisma requires explicit database type:
`typescript
import { DatabaseType } from '@orm-bridge/prisma';
// PostgreSQL
new PrismaExecutor(prisma, DatabaseType.POSTGRESQL);
// MySQL
new PrismaExecutor(prisma, DatabaseType.MYSQL);
// MSSQL
new PrismaExecutor(prisma, DatabaseType.MSSQL);
`
---
`typescript
import { SearchOperator } from '@orm-bridge/prisma';
// Exact match
{ status: { value: 'active', op: SearchOperator.eq, type: 'string' } }
// Contains (case-insensitive)
{ name: { value: 'john', op: SearchOperator.i_cont, type: 'string' } }
// Greater than
{ age: { value: 18, op: SearchOperator.gt, type: 'number' } }
// In list
{ role: { value: ['admin', 'user'], op: SearchOperator.in, type: 'string' } }
// Null check
{ deleted_at: { op: SearchOperator.null, type: 'date' } }
`
Available operators:
eq, not_eq, cont, i_cont, like, i_like, gt, gteq, lt, lteq, in, not_in, null, not_null, empty, not_empty, blank, present, start, end, true, false`, and more.
---
- Quickstart Guide
- Complete Examples
- API Reference
---
Looking for Sequelize support? Check out @orm-bridge/sequelize
---
MIT