-
-
Notifications
You must be signed in to change notification settings - Fork 611
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/main' into checkpoint-cleanup
- Loading branch information
Showing
4 changed files
with
201 additions
and
57 deletions.
There are no files selected for viewing
This file contains 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 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 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. ![Environment variables page](/images/environment-variables-page.jpg) | ||
|
||
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. | ||
|
||
![Environment variables | ||
page](/images/environment-variables-panel.jpg) | ||
|
||
</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> | ||
|
||
<UsefulNextSteps /> |
This file contains 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