@auth/drizzle-adapter 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/index.d.ts +1 -246
- package/index.d.ts.map +1 -1
- package/index.js +1 -246
- package/lib/mysql.d.ts +3 -294
- package/lib/mysql.d.ts.map +1 -1
- package/lib/mysql.js +62 -52
- package/lib/pg.d.ts +3 -294
- package/lib/pg.d.ts.map +1 -1
- package/lib/pg.js +60 -52
- package/lib/sqlite.d.ts +3 -294
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +58 -50
- package/package.json +5 -6
- package/src/index.ts +1 -245
- package/src/lib/mysql.ts +80 -62
- package/src/lib/pg.ts +79 -63
- package/src/lib/sqlite.ts +76 -60
package/src/lib/sqlite.ts
CHANGED
|
@@ -12,84 +12,100 @@ import {
|
|
|
12
12
|
import type {
|
|
13
13
|
Adapter,
|
|
14
14
|
AdapterAccount,
|
|
15
|
+
AdapterAccountType,
|
|
15
16
|
AdapterSession,
|
|
16
17
|
AdapterUser,
|
|
17
18
|
VerificationToken,
|
|
18
19
|
} from "@auth/core/adapters"
|
|
19
20
|
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
export function defineTables(
|
|
22
|
+
schema: Partial<DefaultSQLiteSchema> = {}
|
|
23
|
+
): Required<DefaultSQLiteSchema> {
|
|
24
|
+
const usersTable =
|
|
25
|
+
schema.usersTable ??
|
|
26
|
+
(sqliteTable("user", {
|
|
27
|
+
id: text("id")
|
|
28
|
+
.primaryKey()
|
|
29
|
+
.$defaultFn(() => crypto.randomUUID()),
|
|
30
|
+
name: text("name"),
|
|
31
|
+
email: text("email").notNull(),
|
|
32
|
+
emailVerified: integer("emailVerified", { mode: "timestamp_ms" }),
|
|
33
|
+
image: text("image"),
|
|
34
|
+
}) satisfies DefaultSQLiteUsersTable)
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
)
|
|
36
|
+
const accountsTable =
|
|
37
|
+
schema.accountsTable ??
|
|
38
|
+
(sqliteTable(
|
|
39
|
+
"account",
|
|
40
|
+
{
|
|
41
|
+
userId: text("userId")
|
|
42
|
+
.notNull()
|
|
43
|
+
.references(() => usersTable.id, { onDelete: "cascade" }),
|
|
44
|
+
type: text("type").$type<AdapterAccountType>().notNull(),
|
|
45
|
+
provider: text("provider").notNull(),
|
|
46
|
+
providerAccountId: text("providerAccountId").notNull(),
|
|
47
|
+
refresh_token: text("refresh_token"),
|
|
48
|
+
access_token: text("access_token"),
|
|
49
|
+
expires_at: integer("expires_at"),
|
|
50
|
+
token_type: text("token_type"),
|
|
51
|
+
scope: text("scope"),
|
|
52
|
+
id_token: text("id_token"),
|
|
53
|
+
session_state: text("session_state"),
|
|
54
|
+
},
|
|
55
|
+
(account) => ({
|
|
56
|
+
compositePk: primaryKey({
|
|
57
|
+
columns: [account.provider, account.providerAccountId],
|
|
58
|
+
}),
|
|
59
|
+
})
|
|
60
|
+
) satisfies DefaultSQLiteAccountsTable)
|
|
53
61
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
const sessionsTable =
|
|
63
|
+
schema.sessionsTable ??
|
|
64
|
+
(sqliteTable("session", {
|
|
65
|
+
sessionToken: text("sessionToken").primaryKey(),
|
|
66
|
+
userId: text("userId")
|
|
67
|
+
.notNull()
|
|
68
|
+
.references(() => usersTable.id, { onDelete: "cascade" }),
|
|
69
|
+
expires: integer("expires", { mode: "timestamp_ms" }).notNull(),
|
|
70
|
+
}) satisfies DefaultSQLiteSessionsTable)
|
|
61
71
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
const verificationTokensTable =
|
|
73
|
+
schema.verificationTokensTable ??
|
|
74
|
+
(sqliteTable(
|
|
75
|
+
"verificationToken",
|
|
76
|
+
{
|
|
77
|
+
identifier: text("identifier").notNull(),
|
|
78
|
+
token: text("token").notNull(),
|
|
79
|
+
expires: integer("expires", { mode: "timestamp_ms" }).notNull(),
|
|
80
|
+
},
|
|
81
|
+
(vt) => ({
|
|
82
|
+
compositePk: primaryKey({ columns: [vt.identifier, vt.token] }),
|
|
83
|
+
})
|
|
84
|
+
) satisfies DefaultSQLiteVerificationTokenTable)
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
usersTable,
|
|
88
|
+
accountsTable,
|
|
89
|
+
sessionsTable,
|
|
90
|
+
verificationTokensTable,
|
|
91
|
+
}
|
|
92
|
+
}
|
|
73
93
|
|
|
74
94
|
export function SQLiteDrizzleAdapter(
|
|
75
95
|
client: BaseSQLiteDatabase<"sync" | "async", any, any>,
|
|
76
|
-
schema
|
|
77
|
-
usersTable: sqliteUsersTable,
|
|
78
|
-
accountsTable: sqliteAccountsTable,
|
|
79
|
-
sessionsTable: sqliteSessionsTable,
|
|
80
|
-
verificationTokensTable: sqliteVerificationTokensTable,
|
|
81
|
-
}
|
|
96
|
+
schema?: DefaultSQLiteSchema
|
|
82
97
|
): Adapter {
|
|
83
98
|
const { usersTable, accountsTable, sessionsTable, verificationTokensTable } =
|
|
84
|
-
schema
|
|
99
|
+
defineTables(schema)
|
|
85
100
|
|
|
86
101
|
return {
|
|
87
102
|
async createUser(data: AdapterUser) {
|
|
103
|
+
const { id, ...insertData } = data
|
|
88
104
|
const hasDefaultId = getTableColumns(usersTable)["id"]["hasDefault"]
|
|
89
105
|
|
|
90
106
|
return client
|
|
91
107
|
.insert(usersTable)
|
|
92
|
-
.values(hasDefaultId ?
|
|
108
|
+
.values(hasDefaultId ? insertData : { ...insertData, id })
|
|
93
109
|
.returning()
|
|
94
110
|
.get()
|
|
95
111
|
},
|
|
@@ -416,6 +432,6 @@ export type DefaultSQLiteVerificationTokenTable = SQLiteTableWithColumns<{
|
|
|
416
432
|
export type DefaultSQLiteSchema = {
|
|
417
433
|
usersTable: DefaultSQLiteUsersTable
|
|
418
434
|
accountsTable: DefaultSQLiteAccountsTable
|
|
419
|
-
sessionsTable
|
|
420
|
-
verificationTokensTable
|
|
435
|
+
sessionsTable?: DefaultSQLiteSessionsTable
|
|
436
|
+
verificationTokensTable?: DefaultSQLiteVerificationTokenTable
|
|
421
437
|
}
|