/**
*
*
* ## Installation
*
* ```bash npm2yarn
* npm install drizzle-orm @auth/drizzle-adapter
* npm install drizzle-kit --save-dev
* ```
*
* @module @auth/drizzle-adapter
*/
import { is } from "drizzle-orm"
import { MySqlDatabase } from "drizzle-orm/mysql-core"
import { PgDatabase } from "drizzle-orm/pg-core"
import { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core"
import { DefaultMySqlSchema, MySqlDrizzleAdapter } from "./lib/mysql.js"
import { DefaultPostgresSchema, PostgresDrizzleAdapter } from "./lib/pg.js"
import { DefaultSQLiteSchema, SQLiteDrizzleAdapter } from "./lib/sqlite.js"
import { DefaultSchema, SqlFlavorOptions } from "./lib/utils.js"
import type { Adapter } from "@auth/core/adapters"
export function DrizzleAdapter(
db: SqlFlavor,
schema?: DefaultSchema
): Adapter {
if (is(db, MySqlDatabase)) {
return MySqlDrizzleAdapter(db, schema as DefaultMySqlSchema)
} else if (is(db, PgDatabase)) {
return PostgresDrizzleAdapter(db, schema as DefaultPostgresSchema)
} else if (is(db, BaseSQLiteDatabase)) {
return SQLiteDrizzleAdapter(db, schema as DefaultSQLiteSchema)
}
throw new Error(
`Unsupported database type (${typeof db}) in Auth.js Drizzle adapter.`
)
}