-
-
Notifications
You must be signed in to change notification settings - Fork 710
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
Merged
Merged
Prisma guide #1365
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
--- | ||
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": "john@doe.test", | ||
"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> | ||
|
||
<UsefulNextSteps /> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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