@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/lib/pg.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../src/lib/pg.ts"],"names":[],"mappings":"AACA,OAAO,EAML,SAAS,EACT,UAAU,EACX,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAA;AAGlE,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD9C;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AAE3D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,EACvC,OAAO,uBAAmB,GACzB,OAAO,CA+IT"}
1
+ {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../src/lib/pg.ts"],"names":[],"mappings":"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"}
package/lib/pg.js CHANGED
@@ -1,165 +1,162 @@
1
- import { and, eq } from "drizzle-orm";
2
- import { timestamp, pgTable as defaultPgTableFn, text, primaryKey, integer, } from "drizzle-orm/pg-core";
3
- import { stripUndefined } from "./utils.js";
4
- export function createTables(pgTable) {
5
- const users = pgTable("user", {
6
- id: text("id").notNull().primaryKey(),
7
- name: text("name"),
8
- email: text("email").notNull(),
9
- emailVerified: timestamp("emailVerified", { mode: "date" }),
10
- image: text("image"),
11
- });
12
- const accounts = pgTable("account", {
13
- userId: text("userId")
14
- .notNull()
15
- .references(() => users.id, { onDelete: "cascade" }),
16
- type: text("type").$type().notNull(),
17
- provider: text("provider").notNull(),
18
- providerAccountId: text("providerAccountId").notNull(),
19
- refresh_token: text("refresh_token"),
20
- access_token: text("access_token"),
21
- expires_at: integer("expires_at"),
22
- token_type: text("token_type"),
23
- scope: text("scope"),
24
- id_token: text("id_token"),
25
- session_state: text("session_state"),
26
- }, (account) => ({
27
- compoundKey: primaryKey(account.provider, account.providerAccountId),
28
- }));
29
- const sessions = pgTable("session", {
30
- sessionToken: text("sessionToken").notNull().primaryKey(),
31
- userId: text("userId")
32
- .notNull()
33
- .references(() => users.id, { onDelete: "cascade" }),
34
- expires: timestamp("expires", { mode: "date" }).notNull(),
35
- });
36
- const verificationTokens = pgTable("verificationToken", {
37
- identifier: text("identifier").notNull(),
38
- token: text("token").notNull(),
39
- expires: timestamp("expires", { mode: "date" }).notNull(),
40
- }, (vt) => ({
41
- compoundKey: primaryKey(vt.identifier, vt.token),
42
- }));
43
- return { users, accounts, sessions, verificationTokens };
44
- }
45
- export function pgDrizzleAdapter(client, tableFn = defaultPgTableFn) {
46
- const { users, accounts, sessions, verificationTokens } = createTables(tableFn);
1
+ import { and, eq, getTableColumns } from "drizzle-orm";
2
+ import { integer, pgTable, primaryKey, text, timestamp, } from "drizzle-orm/pg-core";
3
+ export const postgresUsersTable = pgTable("user", {
4
+ id: text("id")
5
+ .primaryKey()
6
+ .$defaultFn(() => crypto.randomUUID()),
7
+ name: text("name"),
8
+ email: text("email").notNull(),
9
+ emailVerified: timestamp("emailVerified", { mode: "date" }),
10
+ image: text("image"),
11
+ });
12
+ export const postgresAccountsTable = pgTable("account", {
13
+ userId: text("userId")
14
+ .notNull()
15
+ .references(() => postgresUsersTable.id, { onDelete: "cascade" }),
16
+ type: text("type").$type().notNull(),
17
+ provider: text("provider").notNull(),
18
+ providerAccountId: text("providerAccountId").notNull(),
19
+ refresh_token: text("refresh_token"),
20
+ access_token: text("access_token"),
21
+ expires_at: integer("expires_at"),
22
+ token_type: text("token_type"),
23
+ scope: text("scope"),
24
+ id_token: text("id_token"),
25
+ session_state: text("session_state"),
26
+ }, (table) => {
27
+ return {
28
+ compositePk: primaryKey({
29
+ columns: [table.provider, table.providerAccountId],
30
+ }),
31
+ };
32
+ });
33
+ export const postgresSessionsTable = pgTable("session", {
34
+ sessionToken: text("sessionToken").primaryKey(),
35
+ userId: text("userId")
36
+ .notNull()
37
+ .references(() => postgresUsersTable.id, { onDelete: "cascade" }),
38
+ expires: timestamp("expires", { mode: "date" }).notNull(),
39
+ });
40
+ export const postgresVerificationTokensTable = pgTable("verificationToken", {
41
+ identifier: text("identifier").notNull(),
42
+ token: text("token").notNull(),
43
+ expires: timestamp("expires", { mode: "date" }).notNull(),
44
+ }, (table) => {
45
+ return {
46
+ compositePk: primaryKey({ columns: [table.identifier, table.token] }),
47
+ };
48
+ });
49
+ export function PostgresDrizzleAdapter(client, schema = {
50
+ usersTable: postgresUsersTable,
51
+ accountsTable: postgresAccountsTable,
52
+ sessionsTable: postgresSessionsTable,
53
+ verificationTokensTable: postgresVerificationTokensTable,
54
+ }) {
55
+ const { usersTable, accountsTable, sessionsTable, verificationTokensTable } = schema;
47
56
  return {
48
57
  async createUser(data) {
49
- return await client
50
- .insert(users)
51
- .values({ ...data, id: crypto.randomUUID() })
58
+ const hasDefaultId = getTableColumns(usersTable)["id"]["hasDefault"];
59
+ return client
60
+ .insert(usersTable)
61
+ .values(hasDefaultId ? data : { ...data, id: crypto.randomUUID() })
52
62
  .returning()
53
- .then((res) => res[0] ?? null);
63
+ .then((res) => res[0]);
54
64
  },
55
- async getUser(data) {
56
- return await client
65
+ async getUser(userId) {
66
+ return client
57
67
  .select()
58
- .from(users)
59
- .where(eq(users.id, data))
60
- .then((res) => res[0] ?? null);
68
+ .from(usersTable)
69
+ .where(eq(usersTable.id, userId))
70
+ .then((res) => (res.length > 0 ? res[0] : null));
61
71
  },
62
- async getUserByEmail(data) {
63
- return await client
72
+ async getUserByEmail(email) {
73
+ return client
64
74
  .select()
65
- .from(users)
66
- .where(eq(users.email, data))
67
- .then((res) => res[0] ?? null);
75
+ .from(usersTable)
76
+ .where(eq(usersTable.email, email))
77
+ .then((res) => (res.length > 0 ? res[0] : null));
68
78
  },
69
79
  async createSession(data) {
70
- return await client
71
- .insert(sessions)
80
+ return client
81
+ .insert(sessionsTable)
72
82
  .values(data)
73
83
  .returning()
74
84
  .then((res) => res[0]);
75
85
  },
76
- async getSessionAndUser(data) {
77
- return await client
86
+ async getSessionAndUser(sessionToken) {
87
+ return client
78
88
  .select({
79
- session: sessions,
80
- user: users,
89
+ session: sessionsTable,
90
+ user: usersTable,
81
91
  })
82
- .from(sessions)
83
- .where(eq(sessions.sessionToken, data))
84
- .innerJoin(users, eq(users.id, sessions.userId))
85
- .then((res) => res[0] ?? null);
92
+ .from(sessionsTable)
93
+ .where(eq(sessionsTable.sessionToken, sessionToken))
94
+ .innerJoin(usersTable, eq(usersTable.id, sessionsTable.userId))
95
+ .then((res) => (res.length > 0 ? res[0] : null));
86
96
  },
87
97
  async updateUser(data) {
88
98
  if (!data.id) {
89
99
  throw new Error("No user id.");
90
100
  }
91
- return await client
92
- .update(users)
101
+ const [result] = await client
102
+ .update(usersTable)
93
103
  .set(data)
94
- .where(eq(users.id, data.id))
95
- .returning()
96
- .then((res) => res[0]);
104
+ .where(eq(usersTable.id, data.id))
105
+ .returning();
106
+ if (!result) {
107
+ throw new Error("No user found.");
108
+ }
109
+ return result;
97
110
  },
98
111
  async updateSession(data) {
99
- return await client
100
- .update(sessions)
112
+ return client
113
+ .update(sessionsTable)
101
114
  .set(data)
102
- .where(eq(sessions.sessionToken, data.sessionToken))
115
+ .where(eq(sessionsTable.sessionToken, data.sessionToken))
103
116
  .returning()
104
117
  .then((res) => res[0]);
105
118
  },
106
- async linkAccount(rawAccount) {
107
- return stripUndefined(await client
108
- .insert(accounts)
109
- .values(rawAccount)
110
- .returning()
111
- .then((res) => res[0]));
119
+ async linkAccount(data) {
120
+ await client.insert(accountsTable).values(data);
112
121
  },
113
122
  async getUserByAccount(account) {
114
- const dbAccount = (await client
115
- .select()
116
- .from(accounts)
117
- .where(and(eq(accounts.providerAccountId, account.providerAccountId), eq(accounts.provider, account.provider)))
118
- .leftJoin(users, eq(accounts.userId, users.id))
119
- .then((res) => res[0])) ?? null;
120
- return dbAccount?.user ?? null;
123
+ const result = await client
124
+ .select({
125
+ account: accountsTable,
126
+ user: usersTable,
127
+ })
128
+ .from(accountsTable)
129
+ .innerJoin(usersTable, eq(accountsTable.userId, usersTable.id))
130
+ .where(and(eq(accountsTable.provider, account.provider), eq(accountsTable.providerAccountId, account.providerAccountId)))
131
+ .then((res) => res[0]);
132
+ return result?.user ?? null;
121
133
  },
122
134
  async deleteSession(sessionToken) {
123
- const session = await client
124
- .delete(sessions)
125
- .where(eq(sessions.sessionToken, sessionToken))
126
- .returning()
127
- .then((res) => res[0] ?? null);
128
- return session;
135
+ await client
136
+ .delete(sessionsTable)
137
+ .where(eq(sessionsTable.sessionToken, sessionToken));
129
138
  },
130
- async createVerificationToken(token) {
131
- return await client
132
- .insert(verificationTokens)
133
- .values(token)
139
+ async createVerificationToken(data) {
140
+ return client
141
+ .insert(verificationTokensTable)
142
+ .values(data)
134
143
  .returning()
135
144
  .then((res) => res[0]);
136
145
  },
137
- async useVerificationToken(token) {
138
- try {
139
- return await client
140
- .delete(verificationTokens)
141
- .where(and(eq(verificationTokens.identifier, token.identifier), eq(verificationTokens.token, token.token)))
142
- .returning()
143
- .then((res) => res[0] ?? null);
144
- }
145
- catch (err) {
146
- throw new Error("No verification token found.");
147
- }
146
+ async useVerificationToken(params) {
147
+ return client
148
+ .delete(verificationTokensTable)
149
+ .where(and(eq(verificationTokensTable.identifier, params.identifier), eq(verificationTokensTable.token, params.token)))
150
+ .returning()
151
+ .then((res) => (res.length > 0 ? res[0] : null));
148
152
  },
149
153
  async deleteUser(id) {
150
- await client
151
- .delete(users)
152
- .where(eq(users.id, id))
153
- .returning()
154
- .then((res) => res[0] ?? null);
154
+ await client.delete(usersTable).where(eq(usersTable.id, id));
155
155
  },
156
- async unlinkAccount(account) {
157
- const { type, provider, providerAccountId, userId } = await client
158
- .delete(accounts)
159
- .where(and(eq(accounts.providerAccountId, account.providerAccountId), eq(accounts.provider, account.provider)))
160
- .returning()
161
- .then((res) => res[0] ?? null);
162
- return { provider, type, providerAccountId, userId };
156
+ async unlinkAccount(params) {
157
+ await client
158
+ .delete(accountsTable)
159
+ .where(and(eq(accountsTable.provider, params.provider), eq(accountsTable.providerAccountId, params.providerAccountId)));
163
160
  },
164
161
  };
165
162
  }