@nestarc/soft-delete
Prisma soft-delete extension for NestJS. Automatically intercepts delete operations, filters deleted records from queries, and supports cascade soft-delete, restore, purge, events, and more.
Features
- Automatic soft-delete:
deleteanddeleteManybecomeupdate/updateManysettingdeletedAt - Transparent query filtering:
findMany,findFirst,findUnique,count,aggregate,groupByall exclude soft-deleted rows by default - Cascade soft-delete and restore across related models
restore(),forceDelete(), andpurge()operations onSoftDeleteService- Route-decorator control:
@WithDeleted(),@OnlyDeleted(),@SkipSoftDelete() - Optional actor tracking via
deletedByFieldandactorExtractor - Lifecycle events (
SoftDeletedEvent,RestoredEvent,PurgedEvent) via@nestjs/event-emitter - Testing utilities:
TestSoftDeleteModule,expectSoftDeleted,expectNotSoftDeleted,expectCascadeSoftDeleted - Standalone Prisma extension (
createPrismaSoftDeleteExtension) for use without NestJS - Global module — register once, use everywhere
Installation
bash
npm install @nestarc/soft-delete
# or
yarn add @nestarc/soft-delete
# or
pnpm add @nestarc/soft-deleteRequired peer dependencies (install if not already present):
bash
npm install @nestjs/common @nestjs/core @prisma/client reflect-metadata rxjsOptional peer dependencies:
bash
# For lifecycle events
npm install @nestjs/event-emitter
# For scheduled purge jobs
npm install @nestjs/schedule