Skip to content

Commit

Permalink
chore(d1): refactor to cleanup adapter src (#10904)
Browse files Browse the repository at this point in the history
  • Loading branch information
ndom91 committed May 14, 2024
1 parent e2eacc2 commit 5538080
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 52 deletions.
64 changes: 21 additions & 43 deletions packages/adapter-d1/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,26 @@ import {
type VerificationToken as AdapterVerificationToken,
isDate,
} from "@auth/core/adapters"
import {
CREATE_ACCOUNT_SQL,
CREATE_SESSION_SQL,
CREATE_USER_SQL,
CREATE_VERIFICATION_TOKEN_SQL,
DELETE_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL,
DELETE_ACCOUNT_BY_USER_ID_SQL,
DELETE_SESSION_BY_USER_ID_SQL,
DELETE_SESSION_SQL,
DELETE_USER_SQL,
DELETE_VERIFICATION_TOKEN_SQL,
GET_ACCOUNT_BY_ID_SQL,
GET_SESSION_BY_TOKEN_SQL,
GET_USER_BY_ACCOUNTL_SQL,
GET_USER_BY_EMAIL_SQL,
GET_USER_BY_ID_SQL,
GET_VERIFICATION_TOKEN_BY_IDENTIFIER_AND_TOKEN_SQL,
UPDATE_SESSION_BY_SESSION_TOKEN_SQL,
UPDATE_USER_BY_ID_SQL,
} from "./queries.js"

export { up } from "./migrations.js"

Expand All @@ -37,49 +57,7 @@ export { up } from "./migrations.js"
*/
export type D1Database = WorkerDatabase | MiniflareD1Database

export const CREATE_USER_SQL = `INSERT INTO users (id, name, email, emailVerified, image) VALUES (?, ?, ?, ?, ?)`
export const GET_USER_BY_ID_SQL = `SELECT * FROM users WHERE id = ?`
export const GET_USER_BY_EMAIL_SQL = `SELECT * FROM users WHERE email = ?`
export const GET_USER_BY_ACCOUNTL_SQL = `
SELECT u.*
FROM users u JOIN accounts a ON a.userId = u.id
WHERE a.providerAccountId = ? AND a.provider = ?`
export const UPDATE_USER_BY_ID_SQL = `
UPDATE users
SET name = ?, email = ?, emailVerified = ?, image = ?
WHERE id = ? `
export const DELETE_USER_SQL = `DELETE FROM users WHERE id = ?`

// SESSION
export const CREATE_SESSION_SQL =
"INSERT INTO sessions (id, sessionToken, userId, expires) VALUES (?,?,?,?)"
export const GET_SESSION_BY_TOKEN_SQL = `
SELECT id, sessionToken, userId, expires
FROM sessions
WHERE sessionToken = ?`
export const UPDATE_SESSION_BY_SESSION_TOKEN_SQL = `UPDATE sessions SET expires = ? WHERE sessionToken = ?`
export const DELETE_SESSION_SQL = `DELETE FROM sessions WHERE sessionToken = ?`
export const DELETE_SESSION_BY_USER_ID_SQL = `DELETE FROM sessions WHERE userId = ?`

// ACCOUNT
export const CREATE_ACCOUNT_SQL = `
INSERT INTO accounts (
id, userId, type, provider,
providerAccountId, refresh_token, access_token,
expires_at, token_type, scope, id_token, session_state,
oauth_token, oauth_token_secret
)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)`
export const GET_ACCOUNT_BY_ID_SQL = `SELECT * FROM accounts WHERE id = ? `
export const GET_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL = `SELECT * FROM accounts WHERE provider = ? AND providerAccountId = ?`
export const DELETE_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL = `DELETE FROM accounts WHERE provider = ? AND providerAccountId = ?`
export const DELETE_ACCOUNT_BY_USER_ID_SQL = `DELETE FROM accounts WHERE userId = ?`

// VERIFICATION_TOKEN
export const GET_VERIFICATION_TOKEN_BY_IDENTIFIER_AND_TOKEN_SQL = `SELECT * FROM verification_tokens WHERE identifier = ? AND token = ?`
export const CREATE_VERIFICATION_TOKEN_SQL = `INSERT INTO verification_tokens (identifier, expires, token) VALUES (?,?,?)`
export const DELETE_VERIFICATION_TOKEN_SQL = `DELETE FROM verification_tokens WHERE identifier = ? and token = ?`

// format is borrowed from the supabase adapter, graciously
function format<T>(obj: Record<string, any>): T {
for (const [key, value] of Object.entries(obj)) {
if (value === null) {
Expand Down
6 changes: 1 addition & 5 deletions packages/adapter-d1/src/migrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,10 @@ export const down = [
`DROP TABLE IF EXISTS "verification_token";`,
]

/**
* @param db
*/
async function up(db: D1Database) {
// run the migration
upSQLStatements.forEach(async (sql) => {
try {
const res = await db.prepare(sql).run()
await db.prepare(sql).run()
} catch (e: any) {
console.error(e.cause?.message, e.message)
}
Expand Down
43 changes: 43 additions & 0 deletions packages/adapter-d1/src/queries.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// USER
export const CREATE_USER_SQL = `INSERT INTO users (id, name, email, emailVerified, image) VALUES (?, ?, ?, ?, ?)`
export const GET_USER_BY_ID_SQL = `SELECT * FROM users WHERE id = ?`
export const GET_USER_BY_EMAIL_SQL = `SELECT * FROM users WHERE email = ?`
export const GET_USER_BY_ACCOUNTL_SQL = `
SELECT u.*
FROM users u JOIN accounts a ON a.userId = u.id
WHERE a.providerAccountId = ? AND a.provider = ?`
export const UPDATE_USER_BY_ID_SQL = `
UPDATE users
SET name = ?, email = ?, emailVerified = ?, image = ?
WHERE id = ? `
export const DELETE_USER_SQL = `DELETE FROM users WHERE id = ?`

// SESSION
export const CREATE_SESSION_SQL =
"INSERT INTO sessions (id, sessionToken, userId, expires) VALUES (?,?,?,?)"
export const GET_SESSION_BY_TOKEN_SQL = `
SELECT id, sessionToken, userId, expires
FROM sessions
WHERE sessionToken = ?`
export const UPDATE_SESSION_BY_SESSION_TOKEN_SQL = `UPDATE sessions SET expires = ? WHERE sessionToken = ?`
export const DELETE_SESSION_SQL = `DELETE FROM sessions WHERE sessionToken = ?`
export const DELETE_SESSION_BY_USER_ID_SQL = `DELETE FROM sessions WHERE userId = ?`

// ACCOUNT
export const CREATE_ACCOUNT_SQL = `
INSERT INTO accounts (
id, userId, type, provider,
providerAccountId, refresh_token, access_token,
expires_at, token_type, scope, id_token, session_state,
oauth_token, oauth_token_secret
)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)`
export const GET_ACCOUNT_BY_ID_SQL = `SELECT * FROM accounts WHERE id = ? `
export const GET_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL = `SELECT * FROM accounts WHERE provider = ? AND providerAccountId = ?`
export const DELETE_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL = `DELETE FROM accounts WHERE provider = ? AND providerAccountId = ?`
export const DELETE_ACCOUNT_BY_USER_ID_SQL = `DELETE FROM accounts WHERE userId = ?`

// VERIFICATION_TOKEN
export const GET_VERIFICATION_TOKEN_BY_IDENTIFIER_AND_TOKEN_SQL = `SELECT * FROM verification_tokens WHERE identifier = ? AND token = ?`
export const CREATE_VERIFICATION_TOKEN_SQL = `INSERT INTO verification_tokens (identifier, expires, token) VALUES (?,?,?)`
export const DELETE_VERIFICATION_TOKEN_SQL = `DELETE FROM verification_tokens WHERE identifier = ? and token = ?`
6 changes: 2 additions & 4 deletions packages/adapter-d1/test/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import { beforeAll } from "vitest"

import { D1Adapter, up, getRecord } from "../src/"
import {
D1Adapter,
up,
getRecord,
GET_USER_BY_ID_SQL,
GET_SESSION_BY_TOKEN_SQL,
GET_ACCOUNT_BY_PROVIDER_AND_PROVIDER_ACCOUNT_ID_SQL,
GET_VERIFICATION_TOKEN_BY_IDENTIFIER_AND_TOKEN_SQL,
} from "../src"
} from "../src/queries"
import {
AdapterSession,
AdapterUser,
Expand Down

0 comments on commit 5538080

Please sign in to comment.