diff --git a/src/lib/db.ts b/src/lib/db.ts index c3c99311..c48ca22e 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -1,9 +1,7 @@ import type { SQL } from "drizzle-orm"; -import { drizzle as drizzleMysql } from "drizzle-orm/mysql2"; -import { drizzle as drizzlePg } from "drizzle-orm/node-postgres"; +import { drizzle } from "drizzle-orm/mysql2"; import type { ResultSetHeader } from "mysql2"; import mysql from "mysql2/promise"; -import pg from "pg"; import * as relations from "@/db/relations"; import * as schema from "@/db/schema"; import { env } from "@/env"; @@ -18,10 +16,7 @@ const globalForDb = globalThis as unknown as { }; function createDb() { - const urlStr = env.DATABASE_URL; - const isPostgres = - urlStr.startsWith("postgres://") || urlStr.startsWith("postgresql://"); - const url = new URL(urlStr); + const url = new URL(env.DATABASE_URL); const isBuild = process.env.NEXT_PHASE === "phase-production-build" || process.env.NEXT_PHASE === "phase-production-compile"; @@ -31,21 +26,6 @@ function createDb() { ? Math.min(env.DATABASE_CONNECT_TIMEOUT_MS, 5_000) : env.DATABASE_CONNECT_TIMEOUT_MS; - if (isPostgres) { - const { Pool } = pg; - const pool = new Pool({ - connectionString: urlStr, - max: connectionLimit, - idleTimeoutMillis: env.DATABASE_IDLE_TIMEOUT_MS, - connectionTimeoutMillis: connectTimeout, - }); - - return drizzlePg(instrumentDatabase(pool) as unknown as pg.Pool, { - schema: fullSchema, - logger: false, - }) as unknown as ReturnType; - } - const pool = mysql.createPool({ host: url.hostname, port: Number(url.port) || 3306, @@ -66,7 +46,7 @@ function createDb() { supportBigNumbers: true, }); - return drizzleMysql(instrumentDatabase(pool), { + return drizzle(instrumentDatabase(pool), { schema: fullSchema, mode: "default", logger: false, @@ -78,19 +58,8 @@ export const db = globalForDb.db ?? createDb(); if (env.NODE_ENV !== "production") globalForDb.db = db; export function rowsFrom(result: unknown): T[] { - if (!result) return []; - if (Array.isArray(result)) { - const [first] = result as [unknown, unknown]; - return (Array.isArray(first) ? first : []) as T[]; - } - if ( - typeof result === "object" && - "rows" in result && - Array.isArray((result as { rows: unknown }).rows) - ) { - return (result as { rows: T[] }).rows; - } - return []; + const [first] = result as [unknown, unknown]; + return (Array.isArray(first) ? first : []) as T[]; } export async function queryRows(query: SQL | string): Promise { @@ -100,32 +69,8 @@ export async function queryRows(query: SQL | string): Promise { export async function execResult( query: SQL | string, ): Promise { - const res = await db.execute(query); - if (Array.isArray(res)) { - const [first] = res as [unknown, unknown]; - return first as ResultSetHeader; - } - if (typeof res === "object" && res !== null) { - const r = res as Record; - return { - affectedRows: typeof r.rowCount === "number" ? r.rowCount : 0, - insertId: typeof r.insertId === "number" ? r.insertId : 0, - fieldCount: 0, - info: "", - serverStatus: 0, - warningStatus: 0, - changedRows: 0, - } as unknown as ResultSetHeader; - } - return { - affectedRows: 0, - insertId: 0, - fieldCount: 0, - info: "", - serverStatus: 0, - warningStatus: 0, - changedRows: 0, - } as unknown as ResultSetHeader; + const [first] = (await db.execute(query)) as unknown as [unknown, unknown]; + return first as ResultSetHeader; } export async function affectedRows(query: SQL | string): Promise {