prisma-extension-batch-upsert
v1.0.0
Published
A lightweight Prisma Client Extension for efficient batch update and upsert operations
Maintainers
Readme
Prisma Extension Batch Update
A lightweight Prisma Client Extension that adds efficient batch update and upsert operations to your Prisma models with true single-SQL statement execution.
Features
- Single SQL Statements: True batch operations using ONE SQL statement per batch
- Batch Updates: Update multiple records with different conditions efficiently
- Batch Upserts: Insert or update multiple records in a single operation
- Multi-Database Support: Works with all Prisma-supported databases
- Lightweight: Minimal code footprint with maximum efficiency
- Type Safe: Full TypeScript support with proper type inference
- Ultra Fast: Up to 80x faster than individual operations
Installation
npm install prisma-extension-batch-upsertQuick Start
import { PrismaClient } from '@prisma/client';
import { batchUpdate } from 'prisma-extension-batch-upsert';
const prisma = new PrismaClient().$extends(batchUpdate);
// Update multiple users with ONE SQL statement
const result = await prisma.user.batchUpdate([
{
where: { email: '[email protected]' },
data: { name: 'Alice Smith', age: 26 }
},
{
where: { email: '[email protected]' },
data: { name: 'Bob Johnson', age: 31 }
}
]);
console.log(`Updated ${result.count} users with ONE SQL statement`);API Reference
batchUpdate(items, options?)
Update multiple records with different where conditions and data.
await prisma.user.batchUpdate([
{
where: { id: 1 },
data: { name: 'Updated Name 1' }
},
{
where: { id: 2 },
data: { name: 'Updated Name 2' }
}
], {
batchSize: 50, // Process 50 records at a time
skipDuplicates: true // Skip duplicate key errors
});batchUpsert(items, options?)
Insert or update multiple records efficiently.
await prisma.product.batchUpsert([
{
where: { sku: 'LAPTOP-001' },
update: { price: 1200 },
create: { sku: 'LAPTOP-001', name: 'Gaming Laptop', price: 1200 }
},
{
where: { sku: 'MOUSE-001' },
update: { price: 50 },
create: { sku: 'MOUSE-001', name: 'Wireless Mouse', price: 50 }
}
]);Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| batchSize | number | 100 | Number of records to process in each batch |
| skipDuplicates | boolean | false | Skip duplicate key errors |
Database Support
This extension works with all databases supported by Prisma:
- PostgreSQL
- MySQL
- SQLite
- SQL Server
- MongoDB
- CockroachDB
Examples
Check out the example directory for complete usage examples including:
- Basic batch updates
- Batch upserts
- Custom options usage
- Multiple model operations
To run the example:
cd example
npm install
npm run db:generate
npm run db:push
npm run devContributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT © dowands
