aiji42 / prisma-data-proxy-alt

This is a library to alternate and self-host the Prisma Data Proxy (cloud.prisma.io)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Does this data proxy support `include`?

denniske opened this issue · comments

Does this data proxy support include?

I tried this query:

    const leaderboardRows = await prisma.leaderboard_row.findMany({
        include: {
            profile: true,
        },
        where: {
            leaderboard_id: leaderboardId,
        },
        skip: start - 1,
        take: count,
        orderBy: {
            ['rank']: 'asc',
        },
    });

and got:

  Invalid `prisma.leaderboard_row.findMany()` invocation:
  Cannot return null for non-nullable field leaderboard_row.profile.

Data proxy logs:

prisma:query SELECT 1
prisma:query SELECT "public"."leaderboard_row"."leaderboard_id", "public"."leaderboard_row"."profile_id", "public"."leaderboard_row"."name", "public"."leaderboard_row"."rank", "public"."leaderboard_row"."rating", "public"."leaderboard_row"."last_match_time", "public"."leaderboard_row"."drops", "public"."leaderboard_row"."losses", "public"."leaderboard_row"."streak", "public"."leaderboard_row"."wins", "public"."leaderboard_row"."updated_at", "public"."leaderboard_row"."rank_country" FROM "public"."leaderboard_row" WHERE "public"."leaderboard_row"."leaderboard_id" = $1 ORDER BY "public"."leaderboard_row"."rank" ASC LIMIT $2 OFFSET $3

When I removed the include the query succeeded:

    const leaderboardRows = await prisma.leaderboard_row.findMany({
        // include: {
        //     profile: true,
        // },
        where: {
            leaderboard_id: leaderboardId,
        },
        skip: start - 1,
        take: count,
        orderBy: {
            ['rank']: 'asc',
        },
    });

Ok I think it supports include but not for composite primary keys. If I remove the composite key from my model it works:

model leaderboard_row {
  leaderboard_id  Int               @id
  profile_id      Int
  name            String
  rank            Int?
  rating          Int?
  last_match_time DateTime?
  drops           Int?
  losses          Int?
  streak          Int?
  wins            Int?
  updated_at      DateTime  @updatedAt
  rank_country    Int?
  profile         profile   @relation(fields: [profile_id], references: [profile_id])

//  @@id([leaderboard_id, profile_id])
  @@index([rating], map: "IDX_935515e6126c1a045608ca78b9")
}

model profile {
  profile_id              Int               @id
  steam_id                String?
  name                    String?
  clan                    String?
  last_match_time         DateTime?
  country                 String?
  avatarhash              String?
  last_match_fetched_time DateTime?
  last_refresh            DateTime?
  leaderboard_row         leaderboard_row[]
}

I have create a PR to fix this issue and also enable prisma raw queries here: #20