mirror of
https://github.com/SrIzan10/next-auth.git
synced 2026-05-01 10:55:20 +00:00
Compare commits
2 Commits
@auth/core
...
@auth/driz
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99035b98f9 | ||
|
|
fabb0525d1 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@auth/drizzle-adapter",
|
"name": "@auth/drizzle-adapter",
|
||||||
"version": "0.3.1",
|
"version": "0.3.2",
|
||||||
"description": "Drizzle adapter for Auth.js.",
|
"description": "Drizzle adapter for Auth.js.",
|
||||||
"homepage": "https://authjs.dev",
|
"homepage": "https://authjs.dev",
|
||||||
"repository": "https://github.com/nextauthjs/next-auth",
|
"repository": "https://github.com/nextauthjs/next-auth",
|
||||||
|
|||||||
@@ -16,19 +16,14 @@
|
|||||||
* @module @auth/drizzle-adapter
|
* @module @auth/drizzle-adapter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MySqlTableFn } from "drizzle-orm/mysql-core/index.js"
|
import { MySqlDatabase, MySqlTableFn } from "drizzle-orm/mysql-core"
|
||||||
import { PgTableFn } from "drizzle-orm/pg-core/index.js"
|
import { PgDatabase, PgTableFn } from "drizzle-orm/pg-core"
|
||||||
import { SQLiteTableFn } from "drizzle-orm/sqlite-core/index.js"
|
import { BaseSQLiteDatabase, SQLiteTableFn } from "drizzle-orm/sqlite-core"
|
||||||
import { mySqlDrizzleAdapter } from "./lib/mysql.js"
|
import { mySqlDrizzleAdapter } from "./lib/mysql.js"
|
||||||
import { pgDrizzleAdapter } from "./lib/pg.js"
|
import { pgDrizzleAdapter } from "./lib/pg.js"
|
||||||
import { SQLiteDrizzleAdapter } from "./lib/sqlite.js"
|
import { SQLiteDrizzleAdapter } from "./lib/sqlite.js"
|
||||||
import {
|
import { SqlFlavorOptions, TableFn } from "./lib/utils.js"
|
||||||
isMySqlDatabase,
|
import { is } from "drizzle-orm"
|
||||||
isPgDatabase,
|
|
||||||
isSQLiteDatabase,
|
|
||||||
SqlFlavorOptions,
|
|
||||||
TableFn,
|
|
||||||
} from "./lib/utils.js"
|
|
||||||
|
|
||||||
import type { Adapter } from "@auth/core/adapters"
|
import type { Adapter } from "@auth/core/adapters"
|
||||||
|
|
||||||
@@ -260,18 +255,15 @@ export function DrizzleAdapter<SqlFlavor extends SqlFlavorOptions>(
|
|||||||
db: SqlFlavor,
|
db: SqlFlavor,
|
||||||
table?: TableFn<SqlFlavor>
|
table?: TableFn<SqlFlavor>
|
||||||
): Adapter {
|
): Adapter {
|
||||||
if (isMySqlDatabase(db)) {
|
if (is(db, MySqlDatabase)) {
|
||||||
// We need to cast to unknown since the type overlaps (PScale is MySQL based)
|
|
||||||
return mySqlDrizzleAdapter(db, table as MySqlTableFn)
|
return mySqlDrizzleAdapter(db, table as MySqlTableFn)
|
||||||
}
|
} else if (is(db, PgDatabase)) {
|
||||||
|
|
||||||
if (isPgDatabase(db)) {
|
|
||||||
return pgDrizzleAdapter(db, table as PgTableFn)
|
return pgDrizzleAdapter(db, table as PgTableFn)
|
||||||
}
|
} else if (is(db, BaseSQLiteDatabase)) {
|
||||||
|
|
||||||
if (isSQLiteDatabase(db)) {
|
|
||||||
return SQLiteDrizzleAdapter(db, table as SQLiteTableFn)
|
return SQLiteDrizzleAdapter(db, table as SQLiteTableFn)
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error("Unsupported database type in Auth.js Drizzle adapter.")
|
throw new Error(
|
||||||
|
`Unsupported database type (${typeof db}) in Auth.js Drizzle adapter.`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import {
|
|||||||
primaryKey,
|
primaryKey,
|
||||||
varchar,
|
varchar,
|
||||||
MySqlTableFn,
|
MySqlTableFn,
|
||||||
|
MySqlDatabase,
|
||||||
} from "drizzle-orm/mysql-core"
|
} from "drizzle-orm/mysql-core"
|
||||||
|
|
||||||
import type { Adapter, AdapterAccount } from "@auth/core/adapters"
|
import type { Adapter, AdapterAccount } from "@auth/core/adapters"
|
||||||
import type { MySql2Database } from "drizzle-orm/mysql2"
|
|
||||||
|
|
||||||
export function createTables(mySqlTable: MySqlTableFn) {
|
export function createTables(mySqlTable: MySqlTableFn) {
|
||||||
const users = mySqlTable("user", {
|
const users = mySqlTable("user", {
|
||||||
@@ -77,7 +77,7 @@ export function createTables(mySqlTable: MySqlTableFn) {
|
|||||||
export type DefaultSchema = ReturnType<typeof createTables>
|
export type DefaultSchema = ReturnType<typeof createTables>
|
||||||
|
|
||||||
export function mySqlDrizzleAdapter(
|
export function mySqlDrizzleAdapter(
|
||||||
client: MySql2Database<Record<string, never>>,
|
client: InstanceType<typeof MySqlDatabase>,
|
||||||
tableFn = defaultMySqlTableFn
|
tableFn = defaultMySqlTableFn
|
||||||
): Adapter {
|
): Adapter {
|
||||||
const { users, accounts, sessions, verificationTokens } =
|
const { users, accounts, sessions, verificationTokens } =
|
||||||
@@ -164,10 +164,7 @@ export function mySqlDrizzleAdapter(
|
|||||||
.then((res) => res[0])
|
.then((res) => res[0])
|
||||||
},
|
},
|
||||||
async linkAccount(rawAccount) {
|
async linkAccount(rawAccount) {
|
||||||
await client
|
await client.insert(accounts).values(rawAccount)
|
||||||
.insert(accounts)
|
|
||||||
.values(rawAccount)
|
|
||||||
.then((res) => res[0])
|
|
||||||
},
|
},
|
||||||
async getUserByAccount(account) {
|
async getUserByAccount(account) {
|
||||||
const dbAccount =
|
const dbAccount =
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
primaryKey,
|
primaryKey,
|
||||||
integer,
|
integer,
|
||||||
PgTableFn,
|
PgTableFn,
|
||||||
|
PgDatabase,
|
||||||
} from "drizzle-orm/pg-core"
|
} from "drizzle-orm/pg-core"
|
||||||
|
|
||||||
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"
|
|
||||||
import type { Adapter, AdapterAccount } from "@auth/core/adapters"
|
import type { Adapter, AdapterAccount } from "@auth/core/adapters"
|
||||||
|
|
||||||
export function createTables(pgTable: PgTableFn) {
|
export function createTables(pgTable: PgTableFn) {
|
||||||
@@ -68,7 +68,7 @@ export function createTables(pgTable: PgTableFn) {
|
|||||||
export type DefaultSchema = ReturnType<typeof createTables>
|
export type DefaultSchema = ReturnType<typeof createTables>
|
||||||
|
|
||||||
export function pgDrizzleAdapter(
|
export function pgDrizzleAdapter(
|
||||||
client: PostgresJsDatabase<Record<string, never>>,
|
client: InstanceType<typeof PgDatabase>,
|
||||||
tableFn = defaultPgTableFn
|
tableFn = defaultPgTableFn
|
||||||
): Adapter {
|
): Adapter {
|
||||||
const { users, accounts, sessions, verificationTokens } =
|
const { users, accounts, sessions, verificationTokens } =
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ export function createTables(sqliteTable: SQLiteTableFn) {
|
|||||||
export type DefaultSchema = ReturnType<typeof createTables>
|
export type DefaultSchema = ReturnType<typeof createTables>
|
||||||
|
|
||||||
export function SQLiteDrizzleAdapter(
|
export function SQLiteDrizzleAdapter(
|
||||||
client: BaseSQLiteDatabase<any, any>,
|
client: InstanceType<typeof BaseSQLiteDatabase>,
|
||||||
tableFn = defaultSqliteTableFn
|
tableFn = defaultSqliteTableFn
|
||||||
): Adapter {
|
): Adapter {
|
||||||
const { users, accounts, sessions, verificationTokens } =
|
const { users, accounts, sessions, verificationTokens } =
|
||||||
|
|||||||
@@ -39,17 +39,3 @@ export type TableFn<Flavor> = Flavor extends AnyMySqlDatabase
|
|||||||
: Flavor extends AnySQLiteDatabase
|
: Flavor extends AnySQLiteDatabase
|
||||||
? SQLiteTableFn
|
? SQLiteTableFn
|
||||||
: AnySQLiteTable
|
: AnySQLiteTable
|
||||||
|
|
||||||
export function isMySqlDatabase(
|
|
||||||
db: any
|
|
||||||
): db is MySqlDatabase<any, any, any, any> {
|
|
||||||
return db instanceof MySqlDatabase
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isPgDatabase(db: any): db is PgDatabase<any, any, any> {
|
|
||||||
return db instanceof PgDatabase
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isSQLiteDatabase(db: any): db is AnySQLiteDatabase {
|
|
||||||
return db instanceof BaseSQLiteDatabase
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user