can i do a nested `connectOrCreate` from within an...
# orm-help
j
can i do a nested
connectOrCreate
from within an
upsert
query? i'm getting an error that prisma doesn't understand my args at the moment
r
@Jaye 👋 Could you share your query and models?
j
i get:
Copy code
Unknown arg `creator` in create.creator for type WorkflowUncheckedCreateInput. Did you mean `createdAt`?
query:
Copy code
const newData = {
              answers,
              type: WorkflowType.Historic,
              creator: {
                connectOrCreate: {
                  create: {
                    email: creatorEmail,
                  },
                  where: {
                    email: creatorEmail,
                  },
                },
              },
            }

            const id = deterministicId(newData)

            await db.workflow.upsert({
              where: {
                id,
              },
              update: newData,
              create: {
                id,
                ...newData,
              },
            })
simplified models:
Copy code
model Workflow {
  id                 String       @id @default(cuid())
  // ...
  createdAt          DateTime     @default(now())
  createdBy          String
  creator            User?        @relation(name: "creator", fields: [createdBy], references: [email])
}

model User {
  id            String    @id @default(cuid())
  // ...
  email         String?   @unique
  createdWorkflows Workflow[] @relation("creator")
}
r
Works fine for me with the above schema and data:
Copy code
const creatorEmail = 'email'
  const newData = {
    creator: {
      connectOrCreate: {
        create: {
          email: creatorEmail,
        },
        where: {
          email: creatorEmail,
        },
      },
    },
  }

  const id = 'some-random-id'

  await prisma.workflow.upsert({
    where: {
      id,
    },
    update: newData,
    create: {
      id,
      ...newData,
    },
  })
215 Views