Skip to main content

Transactional delete

Set options.transactional: true to treat all primary and nested deletions as a single operation. If any part of the operation fails, the entire transaction rolls back, ensuring no data is partially deleted.

Global transactional delete​

When this flag is set, the system ensures an "all-or-nothing" outcome. If a record is not found or a constraint is violated, the API returns a 404 or 500 error, and no changes are committed to the database.

TypeScript
await manta.deleteRecords({
table: "user",
where: [{ status: "inactive" }, { role: "guest" }],
options: { transactional: true }, // Rollback if any user deletion fails
});

Chunked deletes​

Use options.chunkSize to process a large number of deletions in smaller batches. This is a recommended practice to prevent timeouts and memory issues when deleting thousands of records.

TypeScript
// Delete old logs in batches of 500
await manta.deleteRecords({
table: "logs",
where: { createdAt: { lessThan: "2024-01-01" } },
options: { chunkSize: 500 },
});

Dry Run mode​

Set options.dryRun: true to simulate the deletion process. The API returns a preview of the affected record count and data without performing any actual writes.

TypeScript
const preview = await manta.deleteRecords({
table: "user",
where: { status: "inactive" },
options: { dryRun: true },
});