- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 125
Closed
Labels
Description
Description and expected behavior
Enhanced client errors on nested operations when strictUndefinedCheck is turned on.
Given data model:
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["views", "strictUndefinedChecks"]
}
datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}
view User {
  id    Int    @id
  orgId String
}
model Author {
  id    Int    @id @default(autoincrement())
  orgId String
  name  String
  posts Post[]
  @@unique([orgId, name])
  @@allow('all', auth().orgId == orgId)
}
model Post {
  id       Int     @id @default(autoincrement())
  orgId    String
  title    String
  author   Author  @relation(fields: [authorId], references: [id])
  authorId Int
  @@allow('all', auth().orgId == orgId)
}Running following code:
import { PrismaClient } from '@prisma/client'
import { enhance } from '@zenstackhq/runtime'
;(async function main() {
    const _prisma = new PrismaClient({ log: ['info']  })
    const user = { id: 123, orgId: 'org' }
    const prisma = enhance(_prisma,
        { user },
        { logPrismaQuery: false }
    )
    
    const newauthor = await prisma.author.create({
        data: {
            name: `Foo ${Date.now()}`,
            orgId: user.orgId,
            posts: {
                createMany: { data: [{ title: 'Hello', orgId: user.orgId }] }
            }
        },
        include: { posts: true }
    })
    await prisma.author.update({
        where: { orgId_name: { orgId: 'org', name: newauthor.name } },
        data: {
            name: `Bar ${Date.now()}`,
            posts: { deleteMany: { id: { equals: newauthor.posts[0].id } } }
        },
    })
})()Fails with:
prisma:info Starting a sqlite pool with 9 connections.
Error calling enhanced Prisma method `author.update`: 
Invalid `prisma.post.deleteMany()` invocation:
{
  where: {
    AND: [
      {
        id: {
          equals: 3
        },
        authorId: undefined
                  ~~~~~~~~~
      },
      {
        orgId: {
          equals: "org"
        }
      }
    ]
  }
}
Invalid value for argument `0`: explicitly `undefined` values are not allowed.
    at C:\Users\tomas\workspace\mindfuel\try-prisma-fastify\src\main.ts:23:25,
    at step (C:\Users\tomas\workspace\mindfuel\try-prisma-fastify\src\main.ts:33:23),
    at Object.next (C:\Users\tomas\workspace\mindfuel\try-prisma-fastify\src\main.ts:14:53),
    at fulfilled (C:\Users\tomas\workspace\mindfuel\try-prisma-fastify\src\main.ts:5:58) {
  name: 'PrismaClientValidationError',
  clientVersion: '6.1.0',
  internalStack: 'PrismaClientValidationError: \n' +
    'Invalid `prisma.post.deleteMany()` invocation:\n' +
    '\n' +
    '{\n' +
    '  where: {\n' +
    '    AND: [\n' +
    '      {\n' +
    '        id: {\n' +
    '          equals: 3\n' +
    '        },\n' +
    '        authorId: undefined\n' +
    '                  ~~~~~~~~~\n' +
    '      },\n' +
    '      {\n' +
    '        orgId: {\n' +
    '          equals: "org"\n' +
    '        }\n' +
    '      }\n' +
    '    ]\n' +
    '  }\n' +
    '}\n' +
    '\n' +
    'Invalid value for argument `0`: explicitly `undefined` values are not allowed.\n' +
    '    at wn (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:1363)\n' +
    '    at e.throwValidationError (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:10254)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:9013)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '  }\n' +
    '}\n' +
    '\n' +
    'Invalid value for argument `0`: explicitly `undefined` values are not allowed.\n' +
    '    at wn (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:1363)\n' +
    '    at e.throwValidationError (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:10254)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:9013)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '    at wn (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:1363)\n' +
    '    at e.throwValidationError (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:10254)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:9013)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:9013)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '    at md (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:9660)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8076)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8956)\n' +
    '    at pa (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8487)\n' +
    '    at da (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:8956)\n' +
    '    at mr (C:\\Users\\tomas\\workspace\\mindfuel\\try-prisma-fastify\\node_modules\\@prisma\\client\\runtime\\library.js:29:6038)'
}Environment (please complete the following information):
- ZenStack version: 2.10.2, 2.11.3
- Prisma version: 6.1.0
- Database type: SQLite, PostgreSQL
Additional context
- Issue seem to be linked with the usage of composite key in the update({ wherecall. Ifwhereis using PK then above code works fine.
- The same as in the example for update+deleteManyhappens withupdate+upsert.
ymc9