docs/guides/frameworks/prisma.mdx
import Prerequisites from "/snippets/framework-prerequisites.mdx"; import CliInitStep from "/snippets/step-cli-init.mdx"; import CliDevStep from "/snippets/step-cli-dev.mdx"; import CliRunTestStep from "/snippets/step-run-test.mdx"; import CliViewRunStep from "/snippets/step-view-run.mdx"; import UsefulNextSteps from "/snippets/useful-next-steps.mdx";
This guide will show you how to set up Prisma with Trigger.dev, test and view an example task run.
package.json fileDATABASE_URL environment variable set in your .env file, pointing to your PostgreSQL database (e.g. postgresql://user:password@localhost:5432/dbname)Follow these steps if you don't already have Trigger.dev set up in your project.
<Steps> <CliInitStep /> <CliDevStep /> <CliRunTestStep /> <CliViewRunStep /> </Steps>First, create a new task file in your trigger folder.
This is a simple task that will add a new user to the database.
<Note> For this task to work correctly, you will need to have a `user` model in your Prisma schema with an `id` field, a `name` field, and an `email` field. </Note>import { PrismaClient } from "@prisma/client";
import { task } from "@trigger.dev/sdk";
// Initialize Prisma client
const prisma = new PrismaClient();
export const addNewUser = task({
id: "prisma-add-new-user",
run: async (payload: { name: string; email: string; id: number }) => {
const { name, email, id } = payload;
// This will create a new user in the database
const user = await prisma.user.create({
data: {
name: name,
email: email,
id: id,
},
});
return {
message: `New user added successfully: ${user.id}`,
};
},
});
Next, configure the Prisma build extension in the trigger.config.js file to include the Prisma client in the build.
This will ensure that the Prisma client is available when the task runs.
export default defineConfig({
project: "<project ref>", // Your project reference
// Your other config settings...
build: {
extensions: [
prismaExtension({
mode: "legacy", // required
version: "5.20.0", // optional, we'll automatically detect the version if not provided
schema: "prisma/schema.prisma", // update this to the path of your Prisma schema file
}),
],
},
});
The prismaExtension requires a mode parameter. For standard Prisma setups, use "legacy"
mode. See the Prisma extension documentation for other modes
and full configuration options.
We use OpenTelemetry to instrument our tasks and collect telemetry data.
If you want to automatically log all Prisma queries and mutations, you can use the Prisma instrumentation extension.
import { defineConfig } from "@trigger.dev/sdk";
import { PrismaInstrumentation } from "@prisma/instrumentation";
import { OpenAIInstrumentation } from "@traceloop/instrumentation-openai";
export default defineConfig({
//..other stuff
instrumentations: [new PrismaInstrumentation(), new OpenAIInstrumentation()],
});
This provides much more detailed information about your tasks with minimal effort.
</Step> <Step title="Deploying your task"> With the build extension and task configured, you can now deploy your task using the Trigger.dev CLI. <CodeGroup>```bash npm
npx trigger.dev@latest deploy
```
```bash pnpm
pnpm dlx trigger.dev@latest deploy
```
```bash yarn
yarn dlx trigger.dev@latest deploy
```
</CodeGroup>
</Step>
<Step title="Adding your DATABASE_URL environment variable to Trigger.dev">
In your Trigger.dev dashboard sidebar click "Environment Variables" <Icon icon="circle-1" iconType="solid" size={20} color="A8FF53" />, and then the "New environment variable" button <Icon icon="circle-2" iconType="solid" size={20} color="A8FF53" />.
You can add values for your local dev environment, staging and prod. in this case we will add the DATABASE_URL for the production environment.
</Step>
<Step title="Running your task">
To test this task, go to the 'test' page in the Trigger.dev dashboard and run the task with the following payload:
{
"name": "<a-name>", // e.g. "John Doe"
"email": "<a-email>", // e.g. "[email protected]"
"id": <a-number> // e.g. 12345
}
Congratulations! You should now see a new completed run, and a new user with the credentials you provided should be added to your database.
</Step> </Steps> <UsefulNextSteps />