Are there common patterns for implementing a soft ...
# orm-help
d
Are there common patterns for implementing a soft delete with prisma?
r
Hey @Dali Rojas đź‘‹ I personally would implement a
deletedAt
field in my
schema.prisma
Copy code
model User {
  id        Int       @default(autoincrement()) @id
  name      String
  deleted   Boolean   @default(false)
  createdAt DateTime  @default(now())
  deletedAt DateTime?
}
And query it via:
Copy code
await prisma.user.findMany({
    where: {
      deleted: false,
    },
  })
It would also be performant to create an conditional index on your query for non-deleted users as that would be mainly what you would be querying for.
âś… 2
d
Thank you
đź’Ż 1
l
@Ryan if I want to use unique key with soft_deleted, add
@@unique([email, deleted, deletedAt], _name_: “uniqueKeys”)
right?
r
@Leo Hui yes that would be correct
l
@Ryan it may be wrong, because deletedAt default value is null, null can not judge as unique... so I add another field, deletedId which default value is "", and when it soft deleted, I set deletedId as id (in my case ,id is string)
r
Yes NULLS cannot be added to
@unique
👏 1
l
yes