Prisma客户端查询最新

问题描述

给出以下模式。我如何使用pyramida2客户端查询每个存储库上的最新提交?

model Commit {
  id   String   @default(uuid()) @id
  date DateTime @default(Now())
}

model Branch {
  id           String     @default(uuid()) @id
  commit       Commit     @relation(fields: [commitId],references: [id])
  commitId     String
  repository   Repository @relation(fields: [repositoryId],references: [id])
  repositoryId String
}

model Repository {
  id String @default(uuid()) @id
}

解决方法

我认为您的架构应更像这样:

model Commit {
  id        String   @default(uuid()) @id
  branch    Branch   @relation(fields: [branchId],references: [id])
  createdAt DateTime @default(now())
  branchId  String
}

model Branch {
  id           String     @default(uuid()) @id
  name         String
  repository   Repository @relation(fields: [repositoryId],references: [id])
  commits      Commit[]
  repositoryId String
}

model Repository {
  id     String   @default(uuid()) @id
  branch Branch[]
}

您将能够以这种方式从存储库中的所有分支获取最新的提交:

await prisma.repository.findMany({
    select: {
      branch: {
        select: {
          name: true,commits: {
            orderBy: {
              createdAt: 'desc',},take: 1,})