@prisma-extensions/soft-delete
Version:
Soft Delete can be used to hide records instead of deleting them, making them recoverable later.
54 lines (49 loc) • 1.38 kB
text/typescript
import type { Prisma } from '@prisma/client'
export function softDelete<Model, Args extends object>(
this: Model,
args: Prisma.Exact<Args, Prisma.Args<Model, 'delete'>>,
): Promise<Prisma.Result<Model, Args, 'update'>> {
// @ts-expect-error: Requires more types from Prisma
return this.update({
...args,
data: {
deletedAt: new Date(),
},
})
}
export function softDeleteMany<Model, Args extends object>(
this: Model,
args?: Prisma.Exact<Args, Prisma.Args<Model, 'deleteMany'>>,
): Promise<Prisma.Result<Model, Args, 'updateMany'>> {
// @ts-expect-error: Requires more types from Prisma
return this.updateMany({
...args,
data: {
deletedAt: new Date(),
},
})
}
export function softRestore<Model, Args extends object>(
this: Model,
args: Prisma.Exact<Args, Prisma.Args<Model, 'delete'>>,
): Promise<Prisma.Result<Model, Args, 'update'>> {
// @ts-expect-error: Requires more types from Prisma
return this.update({
...args,
data: {
deletedAt: null,
},
})
}
export function softRestoreMany<Model, Args extends object>(
this: Model,
args?: Prisma.Exact<Args, Prisma.Args<Model, 'deleteMany'>>,
): Promise<Prisma.Result<Model, Args, 'updateMany'>> {
// @ts-expect-error: Requires more types from Prisma
return this.updateMany({
...args,
data: {
deletedAt: null,
},
})
}