From 413698510363d371f1c9a9beb9b95f5b74ce85b7 Mon Sep 17 00:00:00 2001 From: onmax Date: Wed, 17 Dec 2025 09:05:40 +0100 Subject: [PATCH] fix(db): pass mode to drizzle for mysql --- src/db/setup.ts | 7 ++++--- src/types/config.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/db/setup.ts b/src/db/setup.ts index 2be1dac5..c392c104 100644 --- a/src/db/setup.ts +++ b/src/db/setup.ts @@ -206,7 +206,7 @@ async function generateDatabaseSchema(nuxt: Nuxt, hub: ResolvedHubConfig) { } async function setupDatabaseClient(nuxt: Nuxt, hub: ResolvedHubConfig) { - const { driver, connection } = hub.db as ResolvedDatabaseConfig + const { dialect, driver, connection, mode } = hub.db as ResolvedDatabaseConfig // For types, d1-http uses sqlite-proxy const driverForTypes = driver === 'd1-http' ? 'sqlite-proxy' : driver @@ -236,10 +236,11 @@ declare module 'hub:db' { // Setup Drizzle ORM // Generate simplified drizzle() implementation + const modeOption = dialect === 'mysql' ? `, mode: '${mode || 'default'}'` : '' let drizzleOrmContent = `import { drizzle } from 'drizzle-orm/${driver}' import * as schema from './db/schema.mjs' -const db = drizzle({ connection: ${JSON.stringify(connection)}, schema }) +const db = drizzle({ connection: ${JSON.stringify(connection)}, schema${modeOption} }) export { db, schema } ` @@ -368,7 +369,7 @@ function getDb() { if (!_db) { const hyperdrive = process.env.${bindingName} || globalThis.__env__?.${bindingName} || globalThis.${bindingName} if (!hyperdrive) throw new Error('${bindingName} binding not found') - _db = drizzle({ connection: hyperdrive.connectionString, schema }) + _db = drizzle({ connection: hyperdrive.connectionString, schema${modeOption} }) } return _db } diff --git a/src/types/config.ts b/src/types/config.ts index 17cfa79f..e6332478 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -179,6 +179,14 @@ export type DatabaseConfig = { * @default true */ applyMigrationsDuringBuild?: boolean + /** + * MySQL mode for Drizzle ORM relational queries. + * Only applicable when dialect is 'mysql'. + * + * @default 'default' + * @see https://orm.drizzle.team/docs/rqb#modes + */ + mode?: 'default' | 'planetscale' } export type ResolvedDatabaseConfig = DatabaseConfig & {