如何在 prisma schema 中添加 @createdBy 和 @updatedBy 注解?

问题描述 投票:0回答:1

在 Nestjs 和 prisma api 中,我想将审核列添加到我的数据库中。

编写映射以在每个实体的每个创建/更新方法中获取

user.id
是很麻烦的。在 Spring Data Rest 中,这就是他们进行审核的方式

  @CreatedBy
  private User user;

  @CreatedDate
  private DateTime createdDate;

例如,在 prisma 中,我可以在架构中使用

@updatedAt
注释来获得更新的数据列,而无需编写代码。

我希望在 prisma 或我的 NestJS 代码中拥有

@createdBy
@updatedBy
审核注释来审核创建或修改行的已连接 user.id。

这怎么可能?

javascript orm nestjs prisma audit
1个回答
0
投票

Prisma 没有原生的“用户”概念,因此您需要自己添加。

https://www.prisma.io/docs/orm/reference/prisma-schema-reference#attributes

您需要在 Prisma 模式中创建一个

User
模型,然后手动将关系添加到相应的模型。如果您将指向
User
的字段设为必填项,则在不指定
User
的情况下,您将无法创建该模型的实例。

model User {
  id        String   @id
  createdAt DateTime @default(now())

  createdDocuments      Document[] @relation(name: "DocumentsCreatedByUser")
  lastModifiedDocuments Document[] @relation(name: "DocumentsLastModifiedByUser")
}

model Document {
  id        String   @id
  createdAt DateTime @default(now())

  userCreatedBy         User @relation(fields: [userCreatedById], references: [id], onDelete: Cascade, name: "DocumentsCreatedByUser")
  userCreatedById       String
  userLastModifiedBy    User? @relation(fields: [userLastModifiedById], references: [id], onDelete: SetNull, name: "DocumentsLastModifiedByUser")
  userLastModifiedById  String?
}
© www.soinside.com 2019 - 2024. All rights reserved.