@auth/pg-adapter
An official PostgreSQL adapter for Auth.js / NextAuth.js.

Installation
- npm
- yarn
- pnpm
npm install next-auth @auth/pg-adapter pg
yarn add next-auth @auth/pg-adapter pg
pnpm add next-auth @auth/pg-adapter pg
default()
Setup
The SQL schema for the tables used by this adapter is as follows. Learn more about the models at our doc page on Database Models.
CREATE TABLE verification_token
(
identifier TEXT NOT NULL,
expires TIMESTAMPTZ NOT NULL,
token TEXT NOT NULL,
PRIMARY KEY (identifier, token)
);
CREATE TABLE accounts
(
id SERIAL,
"userId" INTEGER NOT NULL,
type VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
"providerAccountId" VARCHAR(255) NOT NULL,
refresh_token TEXT,
access_token TEXT,
expires_at BIGINT,
id_token TEXT,
scope TEXT,
session_state TEXT,
token_type TEXT,
PRIMARY KEY (id)
);
CREATE TABLE sessions
(
id SERIAL,
"userId" INTEGER NOT NULL,
expires TIMESTAMPTZ NOT NULL,
"sessionToken" VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE users
(
id SERIAL,
name VARCHAR(255),
email VARCHAR(255),
"emailVerified" TIMESTAMPTZ,
image TEXT,
PRIMARY KEY (id)
);
- npm
- yarn
- pnpm
npm install pg @auth/pg-adapter next-auth
yarn add pg @auth/pg-adapter next-auth
pnpm add pg @auth/pg-adapter next-auth
auth.ts
import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import { PostgresAdapter } from "@auth/pg-adapter";
import { Pool } from "pg";
const pool = new Pool({
host: "localhost",
user: "database-user",
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
});
export default NextAuth({
adapter: PostgresAdapter(pool),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
});
default(
client
:Pool
):Adapter
Parameters
Parameter | Type |
---|---|
client | Pool |
Returns
Adapter