@auth/drizzle-adapter 0.9.0 → 1.0.1
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 +81 -64
- package/index.d.ts.map +1 -1
- package/index.js +86 -69
- package/lib/mysql.d.ts +477 -296
- package/lib/mysql.d.ts.map +1 -1
- package/lib/mysql.js +131 -143
- package/lib/pg.d.ts +476 -296
- package/lib/pg.d.ts.map +1 -1
- package/lib/pg.js +121 -124
- package/lib/sqlite.d.ts +476 -296
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +106 -107
- package/lib/utils.d.ts +10 -21
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +1 -7
- package/package.json +9 -9
- package/src/index.ts +90 -74
- package/src/lib/mysql.ts +378 -195
- package/src/lib/pg.ts +363 -162
- package/src/lib/sqlite.ts +345 -135
- package/src/lib/utils.ts +25 -43
package/lib/mysql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../src/lib/mysql.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../src/lib/mysql.ts"],"names":[],"mappings":"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"}
|
package/lib/mysql.js
CHANGED
|
@@ -1,189 +1,177 @@
|
|
|
1
|
-
import { and, eq } from "drizzle-orm";
|
|
2
|
-
import { int,
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}))
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const { users, accounts, sessions, verificationTokens } = createTables(tableFn);
|
|
1
|
+
import { and, eq, getTableColumns } from "drizzle-orm";
|
|
2
|
+
import { int, mysqlTable, primaryKey, timestamp, varchar, } from "drizzle-orm/mysql-core";
|
|
3
|
+
export const mysqlUsersTable = mysqlTable("user", {
|
|
4
|
+
id: varchar("id", { length: 255 })
|
|
5
|
+
.primaryKey()
|
|
6
|
+
.$defaultFn(() => crypto.randomUUID()),
|
|
7
|
+
name: varchar("name", { length: 255 }),
|
|
8
|
+
email: varchar("email", { length: 255 }).notNull(),
|
|
9
|
+
emailVerified: timestamp("emailVerified", { mode: "date", fsp: 3 }),
|
|
10
|
+
image: varchar("image", { length: 255 }),
|
|
11
|
+
});
|
|
12
|
+
export const mysqlAccountsTable = mysqlTable("account", {
|
|
13
|
+
userId: varchar("userId", { length: 255 })
|
|
14
|
+
.notNull()
|
|
15
|
+
.references(() => mysqlUsersTable.id, { onDelete: "cascade" }),
|
|
16
|
+
type: varchar("type", { length: 255 })
|
|
17
|
+
.$type()
|
|
18
|
+
.notNull(),
|
|
19
|
+
provider: varchar("provider", { length: 255 }).notNull(),
|
|
20
|
+
providerAccountId: varchar("providerAccountId", { length: 255 }).notNull(),
|
|
21
|
+
refresh_token: varchar("refresh_token", { length: 255 }),
|
|
22
|
+
access_token: varchar("access_token", { length: 255 }),
|
|
23
|
+
expires_at: int("expires_at"),
|
|
24
|
+
token_type: varchar("token_type", { length: 255 }),
|
|
25
|
+
scope: varchar("scope", { length: 255 }),
|
|
26
|
+
id_token: varchar("id_token", { length: 2048 }),
|
|
27
|
+
session_state: varchar("session_state", { length: 255 }),
|
|
28
|
+
}, (account) => ({
|
|
29
|
+
compositePk: primaryKey({
|
|
30
|
+
columns: [account.provider, account.providerAccountId],
|
|
31
|
+
}),
|
|
32
|
+
}));
|
|
33
|
+
export const mysqlSessionsTable = mysqlTable("session", {
|
|
34
|
+
sessionToken: varchar("sessionToken", { length: 255 }).primaryKey(),
|
|
35
|
+
userId: varchar("userId", { length: 255 })
|
|
36
|
+
.notNull()
|
|
37
|
+
.references(() => mysqlUsersTable.id, { onDelete: "cascade" }),
|
|
38
|
+
expires: timestamp("expires", { mode: "date" }).notNull(),
|
|
39
|
+
});
|
|
40
|
+
export const mysqlVerificationTokensTable = mysqlTable("verificationToken", {
|
|
41
|
+
identifier: varchar("identifier", { length: 255 }).notNull(),
|
|
42
|
+
token: varchar("token", { length: 255 }).notNull(),
|
|
43
|
+
expires: timestamp("expires", { mode: "date" }).notNull(),
|
|
44
|
+
}, (vt) => ({
|
|
45
|
+
compositePk: primaryKey({ columns: [vt.identifier, vt.token] }),
|
|
46
|
+
}));
|
|
47
|
+
export function MySqlDrizzleAdapter(client, schema = {
|
|
48
|
+
usersTable: mysqlUsersTable,
|
|
49
|
+
accountsTable: mysqlAccountsTable,
|
|
50
|
+
sessionsTable: mysqlSessionsTable,
|
|
51
|
+
verificationTokensTable: mysqlVerificationTokensTable,
|
|
52
|
+
}) {
|
|
53
|
+
const { usersTable, accountsTable, sessionsTable, verificationTokensTable } = schema;
|
|
55
54
|
return {
|
|
56
55
|
async createUser(data) {
|
|
57
|
-
const
|
|
58
|
-
await client
|
|
59
|
-
|
|
56
|
+
const hasDefaultId = getTableColumns(usersTable)["id"]["hasDefault"];
|
|
57
|
+
await client
|
|
58
|
+
.insert(usersTable)
|
|
59
|
+
.values(hasDefaultId ? data : { ...data, id: crypto.randomUUID() });
|
|
60
|
+
return client
|
|
60
61
|
.select()
|
|
61
|
-
.from(
|
|
62
|
-
.where(eq(
|
|
62
|
+
.from(usersTable)
|
|
63
|
+
.where(eq(usersTable.email, data.email))
|
|
63
64
|
.then((res) => res[0]);
|
|
64
65
|
},
|
|
65
|
-
async getUser(
|
|
66
|
-
|
|
66
|
+
async getUser(userId) {
|
|
67
|
+
return client
|
|
67
68
|
.select()
|
|
68
|
-
.from(
|
|
69
|
-
.where(eq(
|
|
70
|
-
.then((res) => res[0]
|
|
71
|
-
return thing;
|
|
69
|
+
.from(usersTable)
|
|
70
|
+
.where(eq(usersTable.id, userId))
|
|
71
|
+
.then((res) => (res.length > 0 ? res[0] : null));
|
|
72
72
|
},
|
|
73
|
-
async getUserByEmail(
|
|
74
|
-
|
|
73
|
+
async getUserByEmail(email) {
|
|
74
|
+
return client
|
|
75
75
|
.select()
|
|
76
|
-
.from(
|
|
77
|
-
.where(eq(
|
|
78
|
-
.then((res) => res[0]
|
|
79
|
-
return user;
|
|
76
|
+
.from(usersTable)
|
|
77
|
+
.where(eq(usersTable.email, email))
|
|
78
|
+
.then((res) => (res.length > 0 ? res[0] : null));
|
|
80
79
|
},
|
|
81
80
|
async createSession(data) {
|
|
82
|
-
await client.insert(
|
|
83
|
-
return
|
|
81
|
+
await client.insert(sessionsTable).values(data);
|
|
82
|
+
return client
|
|
84
83
|
.select()
|
|
85
|
-
.from(
|
|
86
|
-
.where(eq(
|
|
84
|
+
.from(sessionsTable)
|
|
85
|
+
.where(eq(sessionsTable.sessionToken, data.sessionToken))
|
|
87
86
|
.then((res) => res[0]);
|
|
88
87
|
},
|
|
89
|
-
async getSessionAndUser(
|
|
90
|
-
|
|
88
|
+
async getSessionAndUser(sessionToken) {
|
|
89
|
+
return client
|
|
91
90
|
.select({
|
|
92
|
-
session:
|
|
93
|
-
user:
|
|
91
|
+
session: sessionsTable,
|
|
92
|
+
user: usersTable,
|
|
94
93
|
})
|
|
95
|
-
.from(
|
|
96
|
-
.where(eq(
|
|
97
|
-
.innerJoin(
|
|
98
|
-
.then((res) => res[0]
|
|
99
|
-
return sessionAndUser;
|
|
94
|
+
.from(sessionsTable)
|
|
95
|
+
.where(eq(sessionsTable.sessionToken, sessionToken))
|
|
96
|
+
.innerJoin(usersTable, eq(usersTable.id, sessionsTable.userId))
|
|
97
|
+
.then((res) => (res.length > 0 ? res[0] : null));
|
|
100
98
|
},
|
|
101
99
|
async updateUser(data) {
|
|
102
100
|
if (!data.id) {
|
|
103
101
|
throw new Error("No user id.");
|
|
104
102
|
}
|
|
105
|
-
await client
|
|
106
|
-
|
|
103
|
+
await client
|
|
104
|
+
.update(usersTable)
|
|
105
|
+
.set(data)
|
|
106
|
+
.where(eq(usersTable.id, data.id));
|
|
107
|
+
const [result] = await client
|
|
107
108
|
.select()
|
|
108
|
-
.from(
|
|
109
|
-
.where(eq(
|
|
110
|
-
|
|
109
|
+
.from(usersTable)
|
|
110
|
+
.where(eq(usersTable.id, data.id));
|
|
111
|
+
if (!result) {
|
|
112
|
+
throw new Error("No user found.");
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
111
115
|
},
|
|
112
116
|
async updateSession(data) {
|
|
113
117
|
await client
|
|
114
|
-
.update(
|
|
118
|
+
.update(sessionsTable)
|
|
115
119
|
.set(data)
|
|
116
|
-
.where(eq(
|
|
117
|
-
return
|
|
120
|
+
.where(eq(sessionsTable.sessionToken, data.sessionToken));
|
|
121
|
+
return client
|
|
118
122
|
.select()
|
|
119
|
-
.from(
|
|
120
|
-
.where(eq(
|
|
123
|
+
.from(sessionsTable)
|
|
124
|
+
.where(eq(sessionsTable.sessionToken, data.sessionToken))
|
|
121
125
|
.then((res) => res[0]);
|
|
122
126
|
},
|
|
123
|
-
async linkAccount(
|
|
124
|
-
await client.insert(
|
|
127
|
+
async linkAccount(data) {
|
|
128
|
+
await client.insert(accountsTable).values(data);
|
|
125
129
|
},
|
|
126
130
|
async getUserByAccount(account) {
|
|
127
|
-
const
|
|
128
|
-
.select(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return
|
|
131
|
+
const result = await client
|
|
132
|
+
.select({
|
|
133
|
+
account: accountsTable,
|
|
134
|
+
user: usersTable,
|
|
135
|
+
})
|
|
136
|
+
.from(accountsTable)
|
|
137
|
+
.innerJoin(usersTable, eq(accountsTable.userId, usersTable.id))
|
|
138
|
+
.where(and(eq(accountsTable.provider, account.provider), eq(accountsTable.providerAccountId, account.providerAccountId)))
|
|
139
|
+
.then((res) => res[0]);
|
|
140
|
+
return result?.user ?? null;
|
|
137
141
|
},
|
|
138
142
|
async deleteSession(sessionToken) {
|
|
139
|
-
const session = (await client
|
|
140
|
-
.select()
|
|
141
|
-
.from(sessions)
|
|
142
|
-
.where(eq(sessions.sessionToken, sessionToken))
|
|
143
|
-
.then((res) => res[0])) ?? null;
|
|
144
143
|
await client
|
|
145
|
-
.delete(
|
|
146
|
-
.where(eq(
|
|
147
|
-
return session;
|
|
144
|
+
.delete(sessionsTable)
|
|
145
|
+
.where(eq(sessionsTable.sessionToken, sessionToken));
|
|
148
146
|
},
|
|
149
|
-
async createVerificationToken(
|
|
150
|
-
await client.insert(
|
|
151
|
-
return
|
|
147
|
+
async createVerificationToken(data) {
|
|
148
|
+
await client.insert(verificationTokensTable).values(data);
|
|
149
|
+
return client
|
|
152
150
|
.select()
|
|
153
|
-
.from(
|
|
154
|
-
.where(eq(
|
|
151
|
+
.from(verificationTokensTable)
|
|
152
|
+
.where(eq(verificationTokensTable.identifier, data.identifier))
|
|
155
153
|
.then((res) => res[0]);
|
|
156
154
|
},
|
|
157
|
-
async useVerificationToken(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
155
|
+
async useVerificationToken(params) {
|
|
156
|
+
const deletedToken = await client
|
|
157
|
+
.select()
|
|
158
|
+
.from(verificationTokensTable)
|
|
159
|
+
.where(and(eq(verificationTokensTable.identifier, params.identifier), eq(verificationTokensTable.token, params.token)))
|
|
160
|
+
.then((res) => (res.length > 0 ? res[0] : null));
|
|
161
|
+
if (deletedToken) {
|
|
164
162
|
await client
|
|
165
|
-
.delete(
|
|
166
|
-
.where(and(eq(
|
|
167
|
-
return deletedToken;
|
|
168
|
-
}
|
|
169
|
-
catch (err) {
|
|
170
|
-
throw new Error("No verification token found.");
|
|
163
|
+
.delete(verificationTokensTable)
|
|
164
|
+
.where(and(eq(verificationTokensTable.identifier, params.identifier), eq(verificationTokensTable.token, params.token)));
|
|
171
165
|
}
|
|
166
|
+
return deletedToken;
|
|
172
167
|
},
|
|
173
168
|
async deleteUser(id) {
|
|
174
|
-
|
|
175
|
-
.select()
|
|
176
|
-
.from(users)
|
|
177
|
-
.where(eq(users.id, id))
|
|
178
|
-
.then((res) => res[0] ?? null);
|
|
179
|
-
await client.delete(users).where(eq(users.id, id));
|
|
180
|
-
return user;
|
|
169
|
+
await client.delete(usersTable).where(eq(usersTable.id, id));
|
|
181
170
|
},
|
|
182
|
-
async unlinkAccount(
|
|
171
|
+
async unlinkAccount(params) {
|
|
183
172
|
await client
|
|
184
|
-
.delete(
|
|
185
|
-
.where(and(eq(
|
|
186
|
-
return undefined;
|
|
173
|
+
.delete(accountsTable)
|
|
174
|
+
.where(and(eq(accountsTable.provider, params.provider), eq(accountsTable.providerAccountId, params.providerAccountId)));
|
|
187
175
|
},
|
|
188
176
|
};
|
|
189
177
|
}
|