1.0.1 • Published 5 months ago
@silyze/batch-repository v1.0.1
Batch Repository
Batch extensions for @mojsoski/ormm to perform bulk create, update, and delete operations efficiently.
Installation
npm install @silyze/batch-repositoryUsage
Import and extend BatchRepository in your project:
import BatchRepository from "@silyze/batch-repository";
import { IModel } from "@mojsoski/ormm";
interface UserModel extends IModel {
id: string;
name: string;
email: string;
}
class UserBatchRepository extends BatchRepository<"users", UserModel> {
...
}
const repo = new UserBatchRepository(databaseService);API Reference
class BatchRepository<Table extends string, T extends IModel>
Extends ModelRepository<Table, T> and adds batch operations.
createBatch(items: CreateFilter<T>[]): Promise<string[]>
Insert multiple records in a single SQL INSERT statement.
Parameters:
items: Array of objects conforming toCreateFilter<T>(fields to insert).
Returns: Promise resolving to an array of created record IDs (
string[]).
Example:
const newIds = await repo.createBatch([
{ name: "Alice", email: "alice@example.com" },
{ name: "Bob", email: "bob@example.com" },
]);
console.log(newIds); // e.g. ["1", "2"]updateBatch(items: (UpdateFilter<T> & Index)[]): Promise<string[]>
Update multiple records concurrently by mapping individual UPDATE queries over the input array.
Parameters:
items: Array of objects combiningUpdateFilter<T>(fields to update) andIndex(must include anidfield).
Returns: Promise resolving to an array of affected record IDs (
string[]).
Example:
const updatedIds = await repo.updateBatch([
{ id: "1", email: "alice@newdomain.com" },
{ id: "2", name: "Robert" },
]);
console.log(updatedIds); // ["1", "2"]removeBatch(ids: string[]): Promise<string[]>
Delete multiple records in a single SQL DELETE statement using an IN clause.
Parameters:
ids: Array of record IDs (string[]) to delete.
Returns: Promise resolving to an array of deleted record IDs (
string[]).
Example:
const deletedIds = await repo.removeBatch(["1", "2", "3"]);
console.log(deletedIds); // ["1", "2", "3"]Notes
createBatchconstructs a single bulkINSERTfor performance.updateBatchusesconcurrentMapunder the hood, issuing parallelUPDATEqueries.removeBatchconstructs a bulkDELETEwithRETURNING "id".