Overview
Prisma Bindings
Prisma bindings are GraphQL bindings specifically for Prisma APIs. Think of them as an (auto-generated) SDK for Prisma.
The functions exposed by a Prisma binding are named after the root fields of the Prisma GraphQL schema (which defines your Prisma API). Each function call constructs and sends the respective query/mutation to the Prisma API.
Consider the following sample service configuration for a Prisma service:
prisma.yml
endpoint: http://localhost:4466
datamodel: datamodel.graphql
secret: my-secret-42
datamodel.graphql
type User {
id: ID! @unique
name: String!
}
Instantiating a Prisma
binding
With above service configuration, you need to pass three arguments to the Prisma
binding constructor:
const prisma = new Prisma({
typeDefs: 'prisma.graphql',
endpoint: 'http://localhost:4466'
secret: 'my-secret-42'
})
typeDefs
: The path to the Prisma GraphQL schemaendpoint
: The endpoint of your Prisma APIsecret
: The service secret defined in prisma.yml
Sending queries
Sending the user
query
// Retrieve `name` of a specific user
prisma.query.user({ where { id: 'cjcdi63j80adw0146z7r59bn5' } }, '{ name }')
This function call creates and sends the following query to the Prisma API:
query {
user(where: { id: "cjcdi63j80adw0146z7r59bn5" }) {
name
}
}
Sending the users
query
// Retrieve `id` and `name` of all users
prisma.query.users(null, '{ id name }')
This function call creates and sends the following query to the Prisma API:
query {
users {
id
name
}
}
Sending mutations
Sending the createUser
mutation
// Create new user called `Sarah` and retrieve the `id`
prisma.mutation.createUser({ data: { name: 'Sarah' } }, '{ id }')
This function call creates and sends the following mutation to the Prisma API:
mutation {
createUser(data: { name: "Sarah" }) {
id
}
}
Sending the updateUser
mutation
// Update name of a specific user and retrieve the `id`
prisma.mutation.updateUser(
{ where: { id: 'cjcdi63j80adw0146z7r59bn5' }, data: { name: 'Sarah' } },
'{ id }',
)
This function call creates and sends the following mutation to the Prisma API:
mutation {
updateUser(
where: {
id: cjcdi63j80adw0146z7r59bn5""
}
data: {
name: "Sarah"
}
) {
id
}
}
Sending the deleteUser
mutation
// Delete a specific user and retrieve the `name`
prisma.mutation.deleteUser(
{ where: { id: 'cjcdi63j80adw0146z7r59bn5' } },
'{ id }',
)
This function call creates and sends the following mutation to the Prisma API:
mutation {
deleteUser(
where: {
id: cjcdi63j80adw0146z7r59bn5""
}
) {
id
}
}
Checking if a node exists
The Prisma binding API also allows to ask whether a specific node exists in the database:
// Ask whether a post exists with `id` equal to `cjcdi63j80adw0146z7r59bn5` and whose
// `author` is called `Sarah` (return boolean value)
prisma.exists.Post({
id: 'cjcdi63j80adw0146z7r59bn5',
author: {
name: 'Sarah',
},
})