-
-
Notifications
You must be signed in to change notification settings - Fork 860
Prisma guide #1365
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prisma guide #1365
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
--- | ||
title: "Prisma setup guide" | ||
sidebarTitle: "Prisma" | ||
description: "This guide will show you how to setup Prisma with Trigger.dev" | ||
icon: "Triangle" | ||
--- | ||
|
||
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"; | ||
|
||
## Overview | ||
|
||
This guide will show you how to set up Prisma with Trigger.dev, test and view an example task run. | ||
|
||
## Prerequisites | ||
|
||
- An existing Node.js project with a `package.json` file | ||
- Ensure TypeScript is installed | ||
- a [PostgreSQL](https://www.postgresql.org/) database server running locally, or accessible via a connection string | ||
- Prisma ORM [installed and initialized](https://www.prisma.io/docs/getting-started/quickstart) in your project | ||
- A `DATABASE_URL` environment variable set in your `.env` file, pointing to your PostgreSQL database (e.g. `postgresql://user:password@localhost:5432/dbname`) | ||
|
||
## Initial setup | ||
|
||
<Steps> | ||
<CliInitStep /> | ||
<CliDevStep /> | ||
<CliRunTestStep /> | ||
<CliViewRunStep /> | ||
</Steps> | ||
|
||
## Creating a task using Prisma and deploying it to production | ||
|
||
<Steps> | ||
<Step title="Writing the Prisma task"> | ||
|
||
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> | ||
|
||
```ts /trigger/prisma-add-new-user.ts | ||
import { PrismaClient } from "@prisma/client"; | ||
import { task } from "@trigger.dev/sdk/v3"; | ||
|
||
// 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}`, | ||
}; | ||
}, | ||
}); | ||
``` | ||
|
||
</Step> | ||
<Step title="Configuring the build extension"> | ||
|
||
Next, configure the Prisma [build extension](https://trigger.dev/docs/config/extensions/overview) 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. | ||
|
||
For a full list of options available in the Prisma build extension, see the [Prisma build extension documentation](https://trigger.dev/docs/config/config-file#prisma). | ||
|
||
```js /trigger.config.js | ||
export default defineConfig({ | ||
project: "<project ref>", // Your project reference | ||
// Your other config settings... | ||
build: { | ||
extensions: [ | ||
prismaExtension({ | ||
version: "5.20.0", // optional, we'll automatically detect the version if not provided | ||
// update this to the path of your Prisma schema file | ||
schema: "prisma/schema.prisma", | ||
}), | ||
], | ||
}, | ||
}); | ||
``` | ||
|
||
<Note> | ||
[Build extensions](/config/config-file#extensions) allow you to hook into the build system and | ||
customize the build process or the resulting bundle and container image (in the case of | ||
deploying). You can use pre-built extensions or create your own. | ||
</Note> | ||
|
||
</Step> | ||
|
||
<Step title="Optional: adding Prisma instrumentation"> | ||
|
||
We use OpenTelemetry to [instrument](https://trigger.dev/docs/config/config-file#instrumentations) our tasks and collect telemetry data. | ||
|
||
If you want to automatically log all Prisma queries and mutations, you can use the Prisma instrumentation extension. | ||
|
||
```js /trigger.config.js | ||
import { defineConfig } from "@trigger.dev/sdk/v3"; | ||
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 the sidebar select the "Environment Variables" page, then press the "New environment variable" | ||
button.  | ||
|
||
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: | ||
|
||
```json | ||
{ | ||
"name": "John Doe", | ||
"email": "[email protected]", | ||
"id": 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> | ||
|
||
## Troubleshooting | ||
|
||
<UsefulNextSteps /> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor formatting issue in the environment variables section.
The formatting of the image links is slightly off, causing them to appear on separate lines from their descriptions.
Consider adjusting the formatting as follows:
This will improve the readability and layout of the guide.
📝 Committable suggestion
🧰 Tools
🪛 LanguageTool