From 5bd304369382d2cbb62fbbf3e7d87ee12999073c Mon Sep 17 00:00:00 2001 From: Nico Domino Date: Thu, 9 May 2024 12:55:03 +0200 Subject: [PATCH] chore(prisma): cleanup adapter jsdoc (#10862) --- .../pages/getting-started/adapters/prisma.mdx | 7 +- packages/adapter-prisma/src/index.ts | 212 ------------------ 2 files changed, 4 insertions(+), 215 deletions(-) diff --git a/docs/pages/getting-started/adapters/prisma.mdx b/docs/pages/getting-started/adapters/prisma.mdx index e06bac9309..9f44474ed2 100644 --- a/docs/pages/getting-started/adapters/prisma.mdx +++ b/docs/pages/getting-started/adapters/prisma.mdx @@ -27,9 +27,10 @@ DATABASE_URL=postgres://postgres:adminadmin@0.0.0.0:5432/db ### Configuration - - We recommend using version `@prisma/client@5.9.1` or above if using middleware - or any other edge runtime(s). + + We recommend using version `@prisma/client@5.12.0` or above if using + middleware or any other edge runtime(s). See [edge + compatibility](#edge-compatibility) below for more information. diff --git a/packages/adapter-prisma/src/index.ts b/packages/adapter-prisma/src/index.ts index 2e53c83690..60fc22fb49 100644 --- a/packages/adapter-prisma/src/index.ts +++ b/packages/adapter-prisma/src/index.ts @@ -24,218 +24,6 @@ import type { AdapterUser, } from "@auth/core/adapters" -/** - * ## Setup - * - * Add this adapter to your `auth.ts` Auth.js configuration object: - * - * ```js title="auth.ts" - * import NextAuth from "next-auth" - * import Google from "next-auth/providers/google" - * import { PrismaAdapter } from "@auth/prisma-adapter" - * import { PrismaClient } from "@prisma/client" - * - * const prisma = new PrismaClient() - * - * export const { handlers, auth, signIn, signOut } = NextAuth({ - * adapter: PrismaAdapter(prisma), - * providers: [ - * Google, - * ], - * }) - * ``` - * - * ### Create the Prisma schema from scratch - * - * You need to use at least Prisma 2.26.0. Create a schema file in `prisma/schema.prisma` similar to this one: - * - * > This schema is adapted for use in Prisma and based upon our main [schema](https://authjs.dev/reference/core/adapters#models) - * - * ```json title="schema.prisma" - * datasource db { - * provider = "postgresql" - * url = env("DATABASE_URL") - * shadowDatabaseUrl = env("SHADOW_DATABASE_URL") // Only needed when using a cloud provider that doesn't support the creation of new databases, like Heroku. Learn more: https://pris.ly/d/migrate-shadow - * } - * - * generator client { - * provider = "prisma-client-js" - * previewFeatures = ["referentialActions"] // You won't need this in Prisma 3.X or higher. - * } - * - * model Account { - * id String @id @default(cuid()) - * userId String - * type String - * provider String - * providerAccountId String - * refresh_token String? @db.Text - * access_token String? @db.Text - * expires_at Int? - * token_type String? - * scope String? - * id_token String? @db.Text - * session_state String? - * - * user User @relation(fields: [userId], references: [id], onDelete: Cascade) - * - * @@unique([provider, providerAccountId]) - * } - * - * model Session { - * id String @id @default(cuid()) - * sessionToken String @unique - * userId String - * expires DateTime - * user User @relation(fields: [userId], references: [id], onDelete: Cascade) - * } - * - * model User { - * id String @id @default(cuid()) - * name String? - * email String? @unique - * emailVerified DateTime? - * image String? - * accounts Account[] - * sessions Session[] - * } - * - * model VerificationToken { - * identifier String - * token String @unique - * expires DateTime - * - * @@unique([identifier, token]) - * } - * ``` - * - * :::note - * When using the MySQL connector for Prisma, the [Prisma `String` type](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string) gets mapped to `varchar(191)` which may not be long enough to store fields such as `id_token` in the `Account` model. This can be avoided by explicitly using the `Text` type with `@db.Text`. - * ::: - * - * - * ### Create the Prisma schema with `prisma migrate` - * - * This will create an SQL migration file and execute it: - * - * ``` - * npx prisma migrate dev - * ``` - * - * Note that you will need to specify your database connection string in the environment variable `DATABASE_URL`. You can do this by setting it in a `.env` file at the root of your project. - * - * To learn more about [Prisma Migrate](https://www.prisma.io/migrate), check out the [Migrate docs](https://www.prisma.io/docs/concepts/components/prisma-migrate). - * - * ### Generating the Prisma Client - * - * Once you have saved your schema, use the Prisma CLI to generate the Prisma Client: - * - * ``` - * npx prisma generate - * ``` - * - * To configure your database to use the new schema (i.e. create tables and columns) use the `prisma migrate` command: - * - * ``` - * npx prisma migrate dev - * ``` - * - * ### MongoDB support - * - * Prisma supports MongoDB, and so does Auth.js. Following the instructions of the [Prisma documentation](https://www.prisma.io/docs/concepts/database-connectors/mongodb) on the MongoDB connector, things you have to change are: - * - * 1. Make sure that the id fields are mapped correctly - * - * ```prisma - * id String @id @default(auto()) @map("_id") @db.ObjectId - * ``` - * - * 2. The Native database type attribute to `@db.String` from `@db.Text` and userId to `@db.ObjectId`. - * - * ```prisma - * user_id String @db.ObjectId - * refresh_token String? @db.String - * access_token String? @db.String - * id_token String? @db.String - * ``` - * - * Everything else should be the same. - * - * ### Naming Conventions - * - * If mixed snake_case and camelCase column names is an issue for you and/or your underlying database system, we recommend using Prisma's `@map()`([see the documentation here](https://www.prisma.io/docs/concepts/components/prisma-schema/names-in-underlying-database)) feature to change the field names. This won't affect Auth.js, but will allow you to customize the column names to whichever naming convention you wish. - * - * For example, moving to `snake_case` and plural table names. - * - * ```json title="schema.prisma" - * model Account { - * id String @id @default(cuid()) - * userId String @map("user_id") - * type String - * provider String - * providerAccountId String @map("provider_account_id") - * refresh_token String? @db.Text - * access_token String? @db.Text - * expires_at Int? - * token_type String? - * scope String? - * id_token String? @db.Text - * session_state String? - * - * user User @relation(fields: [userId], references: [id], onDelete: Cascade) - * - * @@unique([provider, providerAccountId]) - * @@map("accounts") - * } - * - * model Session { - * id String @id @default(cuid()) - * sessionToken String @unique @map("session_token") - * userId String @map("user_id") - * expires DateTime - * user User @relation(fields: [userId], references: [id], onDelete: Cascade) - * - * @@map("sessions") - * } - * - * model User { - * id String @id @default(cuid()) - * name String? - * email String? @unique - * emailVerified DateTime? @map("email_verified") - * image String? - * accounts Account[] - * sessions Session[] - * authenticators Authenticator[] - * - * @@map("users") - * } - * - * model VerificationToken { - * identifier String - * token String @unique - * expires DateTime - * - * @@unique([identifier, token]) - * @@map("verificationtokens") - * } - * - * model Authenticator { - * id String @id @default(cuid()) - * credentialID String @unique - * userId String - * providerAccountId String - * credentialPublicKey String - * counter Int - * credentialDeviceType String - * credentialBackedUp Boolean - * transports String? - * - * user User @relation(fields: [userId], references: [id], onDelete: Cascade) - * } - * ``` - * - **/ export function PrismaAdapter( prisma: PrismaClient | ReturnType ): Adapter {